1.VideoView 播放视频,SurfaceView展示视频,或是照片
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.zking.video">
<!--读取内存条的权限-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<!--设置照相机的权限-->
<uses-permission android:name="android.permission.CAMERA"></uses-permission>
<!--创建文件的权限-->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
<!--写到内存条的权限-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
</activity>
<activity android:name=".PhoneActivity"
android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
播放视频:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.zking.video.MainActivity"> <VideoView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/main_videoView"/> </LinearLayout>
package com.zking.video; import android.net.Uri; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.MediaController; import android.widget.VideoView; public class MainActivity extends AppCompatActivity { private VideoView main_videoView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); main_videoView = (VideoView) findViewById(R.id.main_videoView); //设置播放源 main_videoView.setVideoURI(Uri.parse("file://mnt/sdcard/DCIM/Camera/VID20170720090922.mp4")); //播放 MediaController mediaController=new MediaController(this); mediaController.setMediaPlayer(main_videoView); main_videoView.setMediaController(mediaController); } }
拍照<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.zking.video.PhoneActivity"> <SurfaceView android:layout_width="match_parent" android:layout_height="200dp" android:id="@+id/main_surfaceView"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/main_button" android:text="拍照"/> </LinearLayout>
package com.zking.video; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.PixelFormat; import android.hardware.Camera; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.widget.Button; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Calendar; public class PhoneActivity extends AppCompatActivity { private SurfaceView main_surfaceView; private Camera camera; private Button main_button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_phone); //捕捉镜头 main_surfaceView = (SurfaceView) findViewById(R.id.main_surfaceView); //照相 main_button = (Button) findViewById(R.id.main_button); //回调函数 main_surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() { @Override public void surfaceCreated(SurfaceHolder holder) { //打开摄像头 //打开后置 camera = Camera.open(); //设置参数 Camera.Parameters parameters= camera.getParameters(); //设置照片的格式 parameters.setPictureFormat(PixelFormat.JPEG); //设置照片的质量 parameters.set("jpeg_quality",100); camera.setParameters(parameters); //开启预览效果 camera.startPreview(); try { camera.setPreviewDisplay(main_surfaceView.getHolder()); } catch (IOException e) { e.printStackTrace(); } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceDestroyed(SurfaceHolder holder) { camera.stopPreview(); //释放内存 camera.release(); } }); //拍照 main_button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { camera.takePicture(null, null, new Camera.PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { //图片压缩 Bitmap bitmap=BitmapFactory.decodeByteArray(data,0,data.length); //时间戳 Calendar calendar=Calendar.getInstance(); int year=calendar.get(Calendar.YEAR); int month=calendar.get(Calendar.MONTH); int day=calendar.get(Calendar.DAY_OF_MONTH); try { FileOutputStream fileOutputStream=new FileOutputStream("/mnt/sdcard/DCIM/Camera/G160628_"+year+month+day+"_"+System.currentTimeMillis()+".jpg"); bitmap.compress(Bitmap.CompressFormat.JPEG,85,fileOutputStream); camera.stopPreview(); camera.startPreview(); } catch (FileNotFoundException e) { e.printStackTrace(); } } }); } }); } }