⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 video.java

📁 Android从入门到精通
💻 JAVA
字号:
package com.androidbook.multimedia;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;


public class Video extends Activity {
    final private static String RECORDED_FILE = "/video.mp4";
    MediaRecorder videoRecorder;
    MediaPlayer player;

    @Override
    protected void onPause() {
        if (videoRecorder != null) {
            videoRecorder.release();
            videoRecorder = null;
        }
        if (player != null) {
            player.release();
            player = null;
        }
        super.onPause();
    }

    @Override
    protected void onResume() {
        super.onResume();
        videoRecorder = new MediaRecorder();
        player = new MediaPlayer();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.video);

        final Button record = (Button) findViewById(R.id.record);
        final Button stop = (Button) findViewById(R.id.stop);
        final Button stopPlayback = (Button) findViewById(R.id.stop_playback);
        final Button play = (Button) findViewById(R.id.play);
        
        final SurfaceView surface = new SurfaceView(getApplicationContext());
        final SurfaceHolder surfaceHolder = surface.getHolder();
        surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    
        FrameLayout frame = (FrameLayout) findViewById(R.id.frame);
        frame.addView(surface);

        record.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                if (videoRecorder == null) {
                    videoRecorder = new MediaRecorder();
                }

                // Fully qualified path name. In this case, we use the Files subdir
                String pathForAppFiles = getFilesDir().getAbsolutePath();
                pathForAppFiles += RECORDED_FILE;
                Log.d("Video filename:",pathForAppFiles );
                
           
                videoRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
                videoRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
                videoRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
                videoRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
                videoRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);

                videoRecorder.setPreviewDisplay(surfaceHolder.getSurface());
                
                
                videoRecorder.setOutputFile(pathForAppFiles);

                try {
                    videoRecorder.prepare();
                    videoRecorder.start();
                    stop.setVisibility(View.VISIBLE);
                    record.setVisibility(View.GONE);
                    play.setVisibility(View.GONE);
                } catch (Exception e) {
                    Log.e("Video", "Failed to prepare and start video recording", e);
                    videoRecorder.release();
                    videoRecorder = null;
                } 
            }
        });

        stop.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                if (videoRecorder == null)
                    return;
                videoRecorder.stop();
                videoRecorder.reset();
                videoRecorder.release();
                videoRecorder = null;
                
                String pathForAppFiles = getFilesDir().getAbsolutePath();
                pathForAppFiles += RECORDED_FILE;
                Log.d("Audio filename:", pathForAppFiles);

                ContentValues values = new ContentValues(10);

                values.put(MediaStore.MediaColumns.TITLE, "RecordedVideo");
                values.put(MediaStore.Video.Media.ALBUM, "Your Groundbreaking Movie");
                values.put(MediaStore.Video.Media.ARTIST, "Your Name");
                values.put(MediaStore.Video.Media.DISPLAY_NAME, "The Video File You Recorded In Media App");

                values.put(MediaStore.MediaColumns.TITLE, "RecordedVideo");
                values.put(MediaStore.MediaColumns.DATE_ADDED, System.currentTimeMillis() / 1000);
                values.put(MediaStore.MediaColumns.MIME_TYPE, "video/mp4");
                values.put(MediaStore.Video.Media.DATA, pathForAppFiles);

                Uri videoUri = getContentResolver().insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values);
                if (videoUri == null) {
                    Log.d("Video", "Content resolver failed");
                    return;
                }

                // Force Media scanner to refresh now. Technically, this is
                // unnecessary, as the media scanner will run periodically but
                // helpful for testing.
                Log.d("Video URI", "Path = " + videoUri.getPath());
                sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, videoUri));


                stop.setVisibility(View.GONE);
                record.setVisibility(View.VISIBLE);
                //play.setVisibility(View.VISIBLE);

            }

        });
        

        
        
        play.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                if (player == null) {
                    player = new MediaPlayer ();
                }
                try {
                        
                    // Fully qualified path name. In this case, we use the Files subdir
                    String audioFilePath = getFilesDir().getAbsolutePath();
                    audioFilePath += RECORDED_FILE;
                    Log.d("Video filename:",audioFilePath );
                    
                    player.setDataSource(audioFilePath);
                    player.prepare();
                    player.start();
                } catch (Exception e) {
                    Log.e("Video", "Playback failed.", e);
                }

                stopPlayback.setVisibility(View.VISIBLE);
                record.setVisibility(View.GONE);
                play.setVisibility(View.GONE);

            }

        });
        
        
        stopPlayback.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                if (player == null)return;
                player.stop();
                player.release();
                player = null;
                stopPlayback.setVisibility(View.GONE);
                record.setVisibility(View.VISIBLE);
                play.setVisibility(View.VISIBLE);
                
            }
            
        });
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -