Android开发(4) | 系统权限、MediaPlayer类 和 VideoView类 的应用——播放多媒体文件
生活随笔
收集整理的這篇文章主要介紹了
Android开发(4) | 系统权限、MediaPlayer类 和 VideoView类 的应用——播放多媒体文件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- MediaPlayer類
- 播放音頻的實例
- VideoView類
- 播放視頻的實例
MediaPlayer類
對多種格式的音頻文件提供了全面的控制方法:
如何獲得MediaPlayer實例?
由于 create 方法內會調用 setDataSource 和 prepare,因此后續無需再進行這兩個的步驟:
如何設置要播放的文件?
MediaPlayer 要播放的文件主要包括3個來源:
重要的控制方法
- seekTo(): 定位方法,該方法是個異步方法,返回時并不意味著定位完成,尤其是播放的網絡文件。真正定位完成時會觸發OnSeekComplete.onSeekComplete(),如果需要可以調用 setOnSeekCompleteListener(OnSeekCompleteListener) 設置監聽器來處理的。
- prepareAsync() : 異步方式設置播放器進入 prepare 狀態。
播放音頻的實例
布局文件 audio_layout.xml:
活動文件:
VideoView類
常用方法有:
播放視頻的實例
布局文件 video_layout.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><Buttonandroid:id="@+id/button_vPlay"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="video play"/><Buttonandroid:id="@+id/button_vPause"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="video pause"/><Buttonandroid:id="@+id/button_vReplay"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="video replay"/></LinearLayout><VideoViewandroid:id="@+id/video_view"android:layout_width="match_parent"android:layout_height="wrap_content"/> </LinearLayout>- 三個按鈕分別起到:播放、暫停、重置為視頻開頭的功能
- VideoView 用以顯示視頻。
活動文件:
public class VideoActivity extends AppCompatActivity implements View.OnClickListener {private static final String TAG = "VideoActivity";private VideoView videoView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.video_layout);videoView = findViewById(R.id.video_view);Button button_vPlay = findViewById(R.id.button_vPlay);Button button_vPause = findViewById(R.id.button_vPause);Button button_vReplay = findViewById(R.id.button_vReplay);button_vPlay.setOnClickListener(this);button_vPause.setOnClickListener(this);button_vReplay.setOnClickListener(this);if(ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){ActivityCompat.requestPermissions(this, new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE }, 1);}else {initVideoPath(); // 初始化VideoViewLog.e(TAG, "onCreate: initVideoPath over");}}private void initVideoPath() {Uri uri = Uri.parse("android.resource://"+getPackageName()+ "/"+R.raw.qinqin);videoView.setVideoURI(uri);Log.e(TAG, "initVideoPath: "+uri);}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,@NonNull int[] grantResults) {switch (requestCode){case 1:if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){initVideoPath();}else{Toast.makeText(this, "拒絕授權則無法使用本APP", Toast.LENGTH_LONG).show();finish();}break;}}@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.button_vPlay:if(!videoView.isPlaying()){videoView.start();}break;case R.id.button_vPause:if(videoView.isPlaying()){videoView.pause();}break;case R.id.button_vReplay:if(videoView.isPlaying()){videoView.resume();}break;}}@Overrideprotected void onDestroy() {super.onDestroy();if(videoView != null){videoView.suspend(); // 釋放資源}} }總結
以上是生活随笔為你收集整理的Android开发(4) | 系统权限、MediaPlayer类 和 VideoView类 的应用——播放多媒体文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 股票急跌缓涨是什么意思,迅速下跌后发生迟
- 下一篇: 长坡厚雪什么意思 什么叫长坡厚雪