<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 第十三天.Android多媒體開發 ## ### 13.1 播放音樂 ### #### 13.1.1 多媒體架構 #### + 基于第三方Packet Video公司的Open Core platform實現 + 支持幾乎所有通用的音頻、視頻、靜態圖像格式,包括:MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF等。 + 通過Open Core程序員可以方便快速的開發出想要的多媒體應用程序,例如:音視頻的采集,回放,視頻會議,實時的流媒體播放等應用。 + Android提供了MediaPlayer和MediaRecorder等上層的Media API給開發人員使用。 + Open Core的代碼在Android代碼的External/Opencore目錄中。 #### 13.1.2 Open Core框架 #### ![](https://box.kancloud.cn/2016-05-21_573fc32aadd34.jpg) #### 13.1.3 調用層次關系 #### ![](https://box.kancloud.cn/2016-05-21_573fc32acb7e1.jpg) #### 13.1.4 音樂播放 #### ``` MediaPlayer mediaPlayer = newMediaPlayer(); if (mediaPlayer.isPlaying()) { mediaPlayer.reset(); //重置為初始狀態 } mediaPlayer.setDataSource("/sdcard/good.mp3"); mediaPlayer.prepare(); //緩沖 mediaPlayer.start(); //開始或恢復播放 mediaPlayer.pause(); //暫停播放 mediaPlayer.start(); //恢復播放 mediaPlayer.stop(); //停止播放 mediaPlayer.release(); //釋放資源 mediaPlayer.setOnCompletionListener(newMediaPlayer.OnCompletionListener() { public void onCompletion(MediaPlayer arg0) { //播放完畢調用 mediaPlayer.release(); } }); mediaPlayer.setOnErrorListener(newMediaPlayer.OnErrorListener() { // 錯誤處理事件 public boolean onError(MediaPlayer player, int arg1, int arg2) { mediaPlayer.release(); returnfalse; } }); ``` ### 13.2 播放視頻 ### #### 13.2.1 播放視頻 #### ``` /* 創建VideoView對象 */ final VideoView videoView = (VideoView)findViewById(R.id.VideoView01); /*設置視頻路徑*/ videoView.setVideoPath("/sdcard/test.mp4"); /* 設置模式-播放進度條 */ videoView.setMediaController(new MediaController(Activity01.this)); videoView.requestFocus(); /* 開始播放 */ videoView.start(); /* 暫停 */ videoView.pause(); ``` #### 13.2.2 音樂/視頻播放案例 #### + 音樂播放案例 MediaPlayerDemo + 視頻播放案例 VideoViewDemo ### 13.3 錄制音頻 ### #### 13.3.1 實現錄音功能 #### 第一步:在功能清單文件AndroidManifest.xml中添加錄音與寫sdcard權限: ``` <uses-permission android:name="android.permission.RECORD_AUDIO"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> ``` 第二步:編寫音頻刻錄代碼: ``` MediaRecorder recorder = newMediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC);//從麥克風采集聲音 recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//內容輸出格式 recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//音頻編碼方式 recorder.setOutputFile("/sdcard/lxt008.amr"); recorder.prepare(); //預期準備 recorder.start(); //開始刻錄 ... recorder.stop(); //停止刻錄 recorder.reset(); //重設 recorder.release(); //刻錄完成一定要釋放資源 ``` #### 13.3.2 音視頻采集 #### 第一步:在功能清單文件AndroidManifest.xml中添加照相機權限: ``` <uses-permission android:name="android.permission.RECORD_AUDIO"/> <uses-permission android:name="android.permission.CAMERA"/> ``` 第二步:編寫拍照代碼: ``` WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);//獲取窗口服務 Display display =wm.getDefaultDisplay();//獲取屏幕信息 recorder = new MediaRecorder(); recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);//從照相機采集視頻 recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); recorder.setVideoSize(display.getWidth(),display.getHeight()); //大小為屏幕的寬和高 recorder.setVideoFrameRate(3); //每秒3幀 recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);//設置視頻編碼方式 recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorder.setOutputFile("/sdcard/lxt008.3gp"); recorder.prepare();//預期準備 recorder.start(); //開始刻錄 ... recorder.stop();//停止刻錄 recorder.reset(); //重設 recorder.release(); //刻錄完成一定要釋放資源 ``` ### 13.4 拍攝照片 ### #### 13.4.1 錄音/拍照案例 #### + 錄音案例 RecordAudioDemo + 拍照案例 CameraDemo ### 13.5 鈴聲設置 ### #### 13.5.1 鈴聲設置:設置各種鈴聲 #### ``` //打開系統鈴聲設置 Intent intent = newIntent(RingtoneManager.ACTION_RINGTONE_PICKER); //設置鈴聲類型和title intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,RingtoneManager.TYPE_RINGTONE); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE,“設置來電鈴聲"); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,RingtoneManager.TYPE_ALARM); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE,"設置鬧鈴鈴聲"); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,RingtoneManager.TYPE_NOTIFICATION); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE,"設置通知鈴聲"); //當設置完成之后返回到當前的Activity startActivityForResult(intent,ButtonAlarm); ``` #### 13.5.2 鈴聲設置:回調函數 #### ``` /* 當設置鈴聲之后的回調函數 */ protected void onActivityResult(intrequestCode, int resultCode, Intent data){ //得到我們選擇的鈴聲 Uri pickedUri =data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); //將我們選擇的鈴聲設置成為默認 RingtoneManager.setActualDefaultRingtoneUri(Activity01.this,RingtoneManager.TYPE_RINGTONE, pickedUri); Uri pickedUri =RingtoneManager.setActualDefaultRingtoneUri(Activity01.this,RingtoneManager.TYPE_ALARM, pickedUri); RingtoneManager.setActualDefaultRingtoneUri(Activity01.this,RingtoneManager.TYPE_NOTIFICATION, pickedUri); } ``` #### 13.5.3 鈴聲設置:main.xml #### ``` <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/TextView01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="選擇下面按鈕來設置鈴聲" /> <Button android:id="@+id/ButtonRingtone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="設置來電鈴聲" /> <Button android:id="@+id/ButtonAlarm" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="設置鬧鐘鈴聲" /> <Button android:id="@+id/ButtonNotification" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="設置通知鈴聲" /> </LinearLayout> ``` #### 13.5.4 鈴聲設置:AndroidManifest.xml #### ``` <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.yarin.android.Examples_07_08" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Activity01" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <uses-sdk android:minSdkVersion="7" /> </manifest> ``` 研究案例RingtoneManagerDemo [實例下載](http://www.apkbus.com/android-83552-1-1.html)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看