日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android开发(4) | 系统权限、MediaPlayer类 和 VideoView类 的应用——播放多媒体文件

發布時間:2023/12/13 Android 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android开发(4) | 系统权限、MediaPlayer类 和 VideoView类 的应用——播放多媒体文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • MediaPlayer類
    • 播放音頻的實例
  • VideoView類
    • 播放視頻的實例


MediaPlayer類

對多種格式的音頻文件提供了全面的控制方法:

如何獲得MediaPlayer實例?

  • 通過構造函數
  • MediaPlayer mp = new MediaPlayer();
  • 調用 MediaPlayer.create() 方法:
  • MediaPlayer mp = MediaPlayer.create(this, R.raw.test);

    由于 create 方法內會調用 setDataSource 和 prepare,因此后續無需再進行這兩個的步驟:

    如何設置要播放的文件?

    MediaPlayer 要播放的文件主要包括3個來源:

  • 應用中的 resource 資源:
  • // 放在程序res/raw目錄下名為的test文件 MediaPlayer.create(this, R.raw.test);
  • 存儲在SD卡或其他文件路徑下的媒體文件
  • // 通過Environment.getExternalStorageDirectory()獲得sd卡路徑 // mediaPlayer.setDataSource(Environment.getExternalStorageDirectory(), "music.mp3"); mp.setDataSource("/sdcard/test.mp3"); // 然后需要將MediaPlayer置為prepare狀態 mp.prepare();
  • 網絡上的媒體文件,流程同上,只是 setDataSource 參數為網上資源的 Uri。
  • 重要的控制方法

    • seekTo(): 定位方法,該方法是個異步方法,返回時并不意味著定位完成,尤其是播放的網絡文件。真正定位完成時會觸發OnSeekComplete.onSeekComplete(),如果需要可以調用 setOnSeekCompleteListener(OnSeekCompleteListener) 設置監聽器來處理的。
    • prepareAsync() : 異步方式設置播放器進入 prepare 狀態。

    播放音頻的實例

    布局文件 audio_layout.xml:

    活動文件:

    public class AudioActivity extends AppCompatActivity implements View.OnClickListener {private static final String TAG = "AudioActivity";private MediaPlayer mediaPlayer;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.audio_layout);Button button_play = findViewById(R.id.button_play);Button button_pause = findViewById(R.id.button_pause);Button button_stop = findViewById(R.id.button_stop);button_play.setOnClickListener(this);button_pause.setOnClickListener(this);button_stop.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 {initMediaPlayer(); // 初始化MediaPlayer}}private void initMediaPlayer() {mediaPlayer = MediaPlayer.create(this, R.raw.shan_gui);}@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.button_play:if(!mediaPlayer.isPlaying()){mediaPlayer.start();Log.e(TAG, "點擊play");}break;case R.id.button_pause:if(mediaPlayer.isPlaying()){mediaPlayer.pause();Log.e(TAG, "點擊pause");}break;case R.id.button_stop:if(mediaPlayer.isPlaying()){mediaPlayer.reset();// reset方法中會調用close、clear方法將MediaPlayer的資源進行清除// 因此需要重新初始化MediaPlayerinitMediaPlayer();Log.e(TAG, "點擊stop");}break;}}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,@NonNull int[] grantResults) {switch (requestCode){case 1:if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){initMediaPlayer();}else{Toast.makeText(this, "拒絕權限將無法使用程序", Toast.LENGTH_LONG).show();finish();}break;}}@Overrideprotected void onDestroy() {super.onDestroy();if(mediaPlayer != null){mediaPlayer.stop();mediaPlayer.release();mediaPlayer = null;}} }

    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类 的应用——播放多媒体文件的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产精品久久久久影院 | 色老板最新地址 | 巨胸挤奶视频www网站 | 欧美综合图区 | 亚洲色图在线观看视频 | 麻豆免费在线观看视频 | 国产不卡在线观看视频 | 欧美www在线观看 | 国产精品成人久久久久久久 | 香蕉视频一级片 | 韩国电影一区二区三区 | 国产91丝袜在线播放 | 欧美一级鲁丝片 | 成年人黄色av| 成年人在线观看 | 国产乱码精品一区二区三 | 五月婷婷色 | 调教小屁屁白丝丨vk | 麻豆精品视频 | 国产精品久久毛片 | 嫩草av91| 丰满人妻一区二区三区53视频 | 国产动漫av | 欧洲色网站 | 日韩av在线免费 | 国产一级片免费看 | 午夜激情一区二区 | 51吃瓜网今日 | 日本女优一区 | 二区中文字幕 | 毛片在线视频观看 | 99视频网 | 久久丫精品 | 操到喷水| 中文字幕亚洲欧美 | 涩视频在线观看 | 国产精品久久色 | 欧美色图在线观看 | 久久日本视频 | 国产欧美亚洲精品 | 日本一本久久 | av东方在线 | 91网在线看 | 91久久综合亚洲鲁鲁五月天 | 欧美一区二区三区啪啪 | 欧美自拍视频在线观看 | jizz国产精品 | 亚洲午夜久久久久久久久红桃 | 一女双乳被两男吸视频 | 久久99精品波多结衣一区 | 极品色av影院 | 成人性生交大片免费看中文 | 色老板最新地址 | 91丨九色丨蝌蚪丨对白 | 狠狠干中文字幕 | 国模私拍xvideos私拍 | 日本三级视频在线观看 | 日韩欧美在线观看视频 | 好色婷婷 | 黄色小视频免费 | 日韩在线视频中文字幕 | 中文字幕视频免费观看 | 在线视频一区二区三区 | 亚洲性猛交xxxx乱大交 | 欧美精品在线观看 | 女人被男人躁得好爽免费视频 | 玖玖国产精品视频 | 久操伊人网| 又嫩又硬又黄又爽的视频 | 国产一级大片在线观看 | 黄色高清免费 | 欢乐谷在线观看免费播放高清 | 高潮毛片无遮挡高清免费 | av超碰在线观看 | 狠狠操精品 | 亚洲播放器| 调教小屁屁白丝丨vk | 天堂视频网 | 久久这里有 | 免费毛片在线 | 北条麻妃一区二区三区四区五区 | 亚洲福利精品视频 | 阿v天堂2018| 麻豆短视频在线观看 | 成人免费看片39 | 日韩毛片网 | 免费成人看片 | 亚洲欧洲免费视频 | 九月婷婷色 | 大陆一级黄色片 | 久草视频2| 日批视频免费观看 | 国产在线观看99 | 天天操 夜夜操 | 伦理久久| 免费黄色小说视频 | 亚洲黄色在线 | 免费观看视频一区 | 色婷婷av久久久久久久 |