Android-Frame布局,UI布局切换,录音,照相机,影音播放器,音频播放器

简介: <FrameLayout anroid:layout_weight=”1”>          <ImageView android:scaleType=”fitCenter”/>          //没有标题栏 requestWindowFeature(Window.FEATURE_NO_TITLE);   //全屏显示(隐藏掉状态栏) //在s

<FrameLayout anroid:layout_weight=”1”>

         <ImageView android:scaleType=”fitCenter”/>

        

//没有标题栏

requestWindowFeature(Window.FEATURE_NO_TITLE);

 

//全屏显示(隐藏掉状态栏)

//setContentView之前调用getWindow().addFlages(WindowManager.LayoutParams.FLAG_FULLSCREEN);

        

Androied-编程UI/布局切换

LinearLayout linearLayout = new LinearLayout(this);

layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.FILL_PARENT){

         textView = new TextView(this);

         textView.setText(R.string.hello);

         textView.setId(34);

         LinearLayout.LayoutParams textParams = new LinearLayout.LayoutParams(

                   ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);

         linearLayout.addView(textView, textParams);

         setContentView(linearLayout,layoutParams);

}

 

Android-多媒体(录音)

<uses-permission android:name=”android.permission.RECORD_AUDIO”/>

 

MediaRecorder recorder = new MediaRecorder();

//从麦克风采集声音

recorder.setAudioSource(MediaRecorder.AudioSource.MIC);

//内容输出格式

recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP)

recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//音频编码方式

recorder.setOutputFile(“/mnt/sdcard/itcast.amr”);

recorder.prepare();//预期准备

recorder.start();//开始刻录

recorder.stop();停止刻录

recorder.reset();//重设

recorder.release();//刻录完成一定要释放资源。

 

Android-多媒体(音频播放器)

MediaPlayer mediaPlayer = new MediaPlayer();

mediaPlayer.setDataSource(“/mnt/sdcard/god.mp3”);

mediaPlayer.prepare();

mediaPlayer.start();//开始或恢复播放

mediaPlayer.pause();//暂停播放

mediaPlayer.stop();//停止播放

mediaPlayer.release();//释放资源

//播放出错事件

mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener(){

         public Boolean onError(MediaPlayer player,int arg1,int arg2){

                   mediaPlayer.release();

                   return false;

}

});

 

多媒体(影音播放器)

main.xml布局文件添加视频画面绘制的SurfaceView控件

<SurfaceView…>

surfaceView.getHolder().setFixedSize(176.144);//设置分辨率

//下面设置Surface不维护自己的缓冲区,而是等待屏幕的渲染引擎内容推送到用户面前

SurfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

 

//当有新的Activity打开,SurfaceView会被销毁。当新的Activity关闭后,当前Activity回到前台,SurfaceView会在onResume()之后被重新创建。因此通过回调完成。

svVedio.getHolder().addCallback(new CallbackImpl())

 

MediaPlayer mediaPlayer = new MediaPlayer();

mediaPlayer.reset();//重置为初始状态

mediaPlayer.setDisplay(surfaceView.getHolder());

mediaPlayer.setDataSource(“/mnt/sdcard/oppo.mp4”);

mediaPlayer.prepare|start();|pause|stop|release();

 

注:影音播放放在模拟器2.2上有问题,需要移植到2.0平台下。

 

Android—多媒体(照相机)

surfaceView.getHolder().setFixedSize(176, 144);//设置分辨率

surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

surfaceView.getHolder().addCallback();//回调

WindowManager wm = getSystemService(Context.WINDOW_SERVICE);//窗口管理器

Display display = wm.getDefaultDisplay();//

Camera camera = Camera.open();//打开照相机

Camera.Parameters parameters = camera.getParameters();

parameters.setPreviewSize(display.getWidth(),display.getHeight());//大小

parameters.setPreviewFrameRate(3);//每秒3

parameters.setPictureFormat(PixelFormat.JPEG);//设置照片的输出格式

parameters.set("jpeg-quality", 85);//照片质量

parameters.setPictureSize(display.getWidth(),display.getHeight());

camera.setParameters(parameters);

 

照片需要在surfaceView.holder回调中完成相机设置并开始预览,因为需要等holder就绪后才可用,道理同播放器相同。

不能再takePicture之后调用startPreview,因为是异步处理。需要在picCall回调中开始预览。

 

照相机

//通过SurfaceView显示取景画面

camera.setPrevieDisplay(surfaceView.getHolder)

camera.startPrevice();//开始预览

camera.autoFocus(null);//自动对焦

camera.takePicture(null,null,null,jpegCallback);//拍照片

camera.stopPrevice();//停止预览

camera.release();//释放摄像头。

 

onKeyDown:

public Boolean onKeyDown(int keyCode,keyEvent event){

         if(camera != null && event.getRepeatCount()==0){

                   case KeyEvent.KEYCODE_SEARCH:

}

PictureCallback:

Bitmap bmp = BitmapFactory.decodeByteArray(data,0,data.length);

File jpg = new File(Environment.getExternalStorageDirectory(),”1.jpg”);

FileOutputStream fos = new FileOutputStream(jpg);

Bmp.compress(Bitmap.CompressFormat.JPEG,100,fos);

fos.close();

camera.startPreview();

}

 

使用意图模拟拍照

若没有摄像头硬件,可使用系统内置的provider实现摄像头功能(该功能2.2的模拟器不支持)

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

//指定输出文件

//outputFileUri指定照片存放的地址,若有的话存放全尺寸大照片,否则返回位图。

//onActivityResult方法中接收

Intent.putExtra(mediaStore.EXTRA_OUTPUT,outputFileUri);

startActivityForResult(intent,0);

 

BitmapFactory.Options options = new BitmapFactory.Options();

Options.inSampleSize = 1;

Bitmap bitmap = BitmapFactory.decodeFile(_path,options);

_image.setImageBitmap(bitmap);

 

<!—需要使用如下权限--->

<uses-permission android:name=”android.permission.CAMERA”/>

<uses-feature android:name=”android.hardware.camera”/>

<uses-feature android:name=”android.hardware.camera.autofocus”/>

 

 

目录
相关文章
|
29天前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
8天前
|
UED
「Mac畅玩鸿蒙与硬件40」UI互动应用篇17 - 照片墙布局
本篇将带你实现一个简单的照片墙布局应用,通过展示多张图片组成照片墙效果,用户可以点击图片查看其状态变化。
113 67
「Mac畅玩鸿蒙与硬件40」UI互动应用篇17 - 照片墙布局
|
2月前
|
ARouter Android开发
Android不同module布局文件重名被覆盖
Android不同module布局文件重名被覆盖
|
12天前
|
XML 搜索推荐 前端开发
安卓开发中的自定义视图:打造个性化UI组件
在安卓应用开发中,自定义视图是一种强大的工具,它允许开发者创造独一无二的用户界面元素,从而提升应用的外观和用户体验。本文将通过一个简单的自定义视图示例,引导你了解如何在安卓项目中实现自定义组件,并探讨其背后的技术原理。我们将从基础的View类讲起,逐步深入到绘图、事件处理以及性能优化等方面。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。
|
26天前
|
XML 前端开发 Android开发
Android:UI:Drawable:View/ImageView与Drawable
通过本文的介绍,我们详细探讨了Android中Drawable、View和ImageView的使用方法及其相互关系。Drawable作为图像和图形的抽象表示,提供了丰富的子类和自定义能力,使得开发者能够灵活地实现各种UI效果。View和ImageView则通过使用Drawable实现了各种图像和图形的显示需求。希望本文能为您在Android开发中使用Drawable提供有价值的参考和指导。
37 2
|
2月前
|
Java 程序员 开发工具
Android|修复阿里云播放器下载不回调的问题
虽然 GC 带来了很多便利,但在实际编码时,我们也需要注意对象的生命周期管理,该存活的存活,该释放的释放,避免因为 GC 导致的问题。
39 2
|
2月前
|
Android开发 开发者 容器
flutter:&UI布局 (六)
本文档介绍了Flutter中的UI布局方式,包括线性布局(如Column和Row)、非线性布局(如Stack、Flex、Positioned)以及Wrap布局等。通过具体示例代码展示了如何使用这些布局组件来构建灵活多变的用户界面,例如使用Column垂直排列文本、使用Stack叠加组件、以及利用Wrap实现自动换行的按钮布局等。
|
3月前
|
XML Android开发 UED
💥Android UI设计新风尚!掌握Material Design精髓,让你的界面颜值爆表!🎨
随着移动应用市场的蓬勃发展,用户对界面设计的要求日益提高。为此,掌握由Google推出的Material Design设计语言成为提升应用颜值和用户体验的关键。本文将带你深入了解Material Design的核心原则,如真实感、统一性和创新性,并通过丰富的组件库及示例代码,助你轻松打造美观且一致的应用界面。无论是色彩搭配还是动画效果,Material Design都能为你的Android应用增添无限魅力。
77 1
|
2月前
|
ARouter Android开发
Android不同module布局文件重名被覆盖
Android不同module布局文件重名被覆盖
145 0
|
4月前
|
存储 搜索推荐 Java
探索安卓开发中的自定义视图:打造个性化UI组件Java中的异常处理:从基础到高级
【8月更文挑战第29天】在安卓应用的海洋中,一个独特的用户界面(UI)能让应用脱颖而出。自定义视图是实现这一目标的强大工具。本文将通过一个简单的自定义计数器视图示例,展示如何从零开始创建一个具有独特风格和功能的安卓UI组件,并讨论在此过程中涉及的设计原则、性能优化和兼容性问题。准备好让你的应用与众不同了吗?让我们开始吧!