VideoView与SurfaceView

来源:互联网 发布:cmd修复网络连接 编辑:程序博客网 时间:2024/05/29 18:05

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();                        }                    }                });            }        });    }}


 


原创粉丝点击