版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第8章Android多媒體技術8.1音頻文件播放8.2服務(Service)
8.3視頻文件播放
8.4小結
8.1音頻文件播放
音頻文件的格式眾多,除了WAV格式是沒有經(jīng)過壓縮的音頻格式外,其余格式都屬于壓縮存儲格式,例如MP3格式和WMA格式等。其中,WMA格式(Android系統(tǒng)不支持)的全稱為WindowsMediaAudio,是微軟公司設計的一種優(yōu)秀音頻壓縮格式,而目前流行的高壓縮比音頻格式為MP3格式。本節(jié)將介紹MP3格式音頻文件的播放技術。
Android系統(tǒng)的MediaPlayer類集成了MP3音頻解碼器,這項技術十分成熟,借助MediaPlayer類的對象播放MP3文件只需要調用播放控制方法即可,其流程如圖8-1所示。圖8-1MediaPlayer對象播放MP3文件流程圖本節(jié)(甚至是本章)的準備工作是向模擬的SD卡中寫入音頻(和視頻)文件,如圖8-2所示。這里向SD卡中傳送了三個mp3文件供本節(jié)使用,還有另外兩個視頻文件可供第8.3節(jié)使用。這三個音頻文件分別為cgq_bzsndm.mp3、cgq_tyrx.mp3和gln_tt.mp3,兩個視頻文件依次為bear.3GP和wolf.MP4。圖8-2模擬器SD卡上的多媒體文件
例8.1
播放MP3文件工程。
新建工程ex08_01,應用名為MyMP3PlayerApp,包名為cn.jxufe.zhangenhe,活動界面名為MyMP3PlayerAct。工程ex08_01包括源文件MyMP3PlayerAct.java、布局文件main.xml、列表框布局文件mp3list.xml、顏色資源文件myguicolor.xml以及圖像資源文件play1.png、stop1.png、stop2.png、pause1.png、pause2.png和pause3.png等。其中,6個圖像文件用于表示播放控制按鈕的狀態(tài),如圖8-3所示。文件myguicolor.xml與工程ex07_08中的同名文件內容相同。
列表布局文件mp3list.xml的內容如下所示,表示列表框中的每行顯示一個文本。圖8-3工程ex08_01執(zhí)行結果
1<?xmlversion="1.0"encoding="utf-8"?>
2<AbsoluteLayout
3android:id="@+id/widget0"
4android:layout_width="fill_parent"
5android:layout_height="fill_parent"
6xmlns:android="/apk/res/android"
7>
8<TextView
9android:id="@+id/mp3name"
10android:layout_width="wrap_content"
11android:layout_height="wrap_content"
12android:text="TextView"
13android:layout_x="10px"
14android:layout_y="10px"
15android:textColor="@drawable/yellow"
16>
17</TextView>
18</AbsoluteLayout>
工程ex08_01的布局如圖8-3所示,其布局文件main.xml的內容如下所示:
1<?xmlversion="1.0"encoding="utf-8"?>
2<AbsoluteLayout
3android:id="@+id/widget0"
4android:layout_width="fill_parent"
5android:layout_height="fill_parent"
6xmlns:android="/apk/res/android"
7android:background="@drawable/darkgray"
8>
9<SeekBar
10android:id="@+id/seekbar"
11android:layout_x="10px"
12android:layout_y="10px"
13android:layout_height="wrap_content"
14android:layout_width="460px"
15android:max="100"
16android:progress="0"
17>
18</SeekBar>
19<ImageButton
20android:id="@+id/imbplay"
21android:layout_width="80px"
22android:layout_height="80px"
23android:layout_x="20px"
24android:layout_y="70px"
25android:src="@drawable/play1"
26android:scaleType="fitCenter"
27android:onClick="myPlayMD"
28>
29</ImageButton>
30<ImageButton
31android:id="@+id/imbpause"
32android:layout_width="80px"
33android:layout_height="80px"
34android:layout_x="110px"
35android:layout_y="70px"
36android:src="@drawable/pause1"
37android:scaleType="fitCenter"
38android:onClick="myPauseMD"
39>
40</ImageButton>
41<ImageButton
42android:id="@+id/imbstop"
43android:layout_width="80px"
44android:layout_height="80px"
45android:layout_x="200px"
46android:layout_y="70px"
47android:src="@drawable/stop1"
48android:scaleType="fitCenter"
49android:onClick="myStopMD"
50>
51</ImageButton>
52<TextView
53android:id="@+id/textview"
54android:layout_width="200px"
55android:layout_height="50px"
56android:text=""
57android:layout_x="20px"
58android:layout_y="170px"
59android:textColor="@drawable/green"
60>
61</TextView>
62<ListView
63android:id="@+id/listview"
64android:layout_width="400px"
65android:layout_height="400px"
66android:layout_x="40px"
67android:layout_y="240px"
68>
69</ListView>
70</AbsoluteLayout>
源文件MyMP3PlayerAct.java的代碼如下所示:
1packagecn.jxufe.zhangenhe;
2
3importjava.io.File;
4importjava.io.FilenameFilter;
5importjava.io.IOException;
6importjava.util.ArrayList;
7importjava.util.HashMap;
8importjava.util.Timer;
9importjava.util.TimerTask;
10importandroid.app.Activity;
11importandroid.media.MediaPlayer;
12importandroid.media.MediaPlayer.OnCompletionListener;
13importandroid.os.Bundle;
14importandroid.view.View;
15importandroid.widget.AdapterView;
16importandroid.widget.AdapterView.OnItemClickListener;
17importandroid.widget.ImageButton;
18importandroid.widget.ListView;
19importandroid.widget.SeekBar;
20importandroid.widget.SimpleAdapter;
21importandroid.widget.TextView;
22
23publicclassMyMP3PlayerActextendsActivity
24 implementsSeekBar.OnSeekBarChangeListener{
25 privateSeekBarmySeekbar;
26 privateTextViewmytv;
27 privateImageButtonimbplay,imbpause,imbstop;
28 privateListViewlvMP3List;
29 privatebooleanblstop=false;
30 privateintblpause=0;
31 privatestaticfinalStringMP3PATH="/sdcard/";
32 privateMediaPlayermyMP3Player;
33 privateTimertimer;
34 privateTimerTasktimerTask;
35 privatebooleanstopTrack=false;
36第25行定義了進度條對象mySeekbar;第26行定義了靜態(tài)文本框對象mytv;第27行定義了三個圖像按鈕控件對象imbplay、imbpause和imbstop;第28行定義了列表框控件對象lvMP3List;第31行定義了SD卡路徑常量MP3PATH;第32行定義了MediaPlayer對象myMP3Player;第33、34行定義了定時器對象timer和定時器任務timerTask。
37@Override
38publicvoidonCreate(BundlesavedInstanceState){
39super.onCreate(savedInstanceState);
40setContentView(R.layout.main);
41myInitGUI();
42}第56~63行為lvMP3List列表框列表項的單擊事件,當某項被單擊時,該項的文本(即要播放音頻文件的文件名)顯示在靜態(tài)文本框tv_name中,如圖8-3(b)所示。
64 MP3PlayList();
65 myMP3Player=newMediaPlayer();
第65行創(chuàng)建myMP3Player對象。
66 timer=newTimer();
67 timerTask=newTimerTask(){
68 @Override
69 publicvoidrun(){
70 if(!stopTrack){
71 if(myMP3Player.isPlaying
())第79~89行的三個覆蓋方法依次表示進度條滑塊改變時、改變過程中和停止拖動后的事件方法。為了避免拖動過程中與定時器設定滑塊位置沖突,通過boolean量stopTrack進行協(xié)調,如第70、83行所示。當滑塊停止拖動時,調用seekTo方法將播放文件的位置與滑塊的位置同步。
90 publicvoidmyPlayMD(Viewv){
91 if(playMP3()){
92 blstop=true;
93 blpause=1;
94 imbstop.setImageDrawable(getResources()
95 .getDrawable(R.drawable.stop1));
96 imbpause.setImageDrawable(getResources()
97 .getDrawable(R.drawable.pause1));
98 }
99 }第90~99行為“播放”按鈕的點擊事件方法。第91行調用playMP3方法開始播放音頻文件,如果調用成功,則返回真,此時設置變量blstop為真(第92行),表示“停止”按鈕可用;設置blpause為1(第93行),表示“暫?!卑粹o進入狀態(tài)1?!皶和!卑粹o有三個狀態(tài),即不可用、點擊暫停和點擊繼續(xù)播放,分別對應于blpause的值為0、1和2。第94~97行設置“停止”和“暫?!卑粹o的圖標。
100 publicvoidmyPauseMD(Viewv){
101 switch(blpause){
102 case1:
103 imbpause.setImageDrawable(getResources()
111 myMP3Player.start();
112 blpause=1;
113 break;
114 }
115 }
第100~115行為“暫停”按鈕的點擊事件方法。當blpause為1時,處于點擊暫停狀態(tài),此時點擊“暫?!卑粹o,則調用pause方法(第105行)暫停播放,并設置“暫?!卑粹o的狀態(tài)為“點擊繼續(xù)播放”狀態(tài),即blpause為2(第106行)。當blpause為2時,處于點擊繼續(xù)播放狀態(tài),則調用start方法(第111行)繼續(xù)播放,并設置blpause為1。
149 }
150 });
151 returntrue;
152 }
第128行的方法playMP3為播放音頻文件的方法。第129行調用reset方法復位播放器;第131行得到播放文件路徑;第132行判斷文件是否存在;第133行將該文件設為要播放的音頻文件;第134行調用prepare方法準備播放;第136行調用start方法開始播放。第137~150行說明播放過程中監(jiān)聽OnCompletionListener接口,當播放完成后,自動調用onCompletion方法來復位myMP3Player對象(第141行)。
153 }catch(IllegalArgumentExceptione){
154 e.printStackTrace();
155 }catch(IllegalStateExceptione){
156 e.printStackTrace();
157 }catch(IOExceptione){
158 e.printStackTrace();
159 }
160 returnfalse;
161 }
162 classMP3FilterimplementsFilenameFilter{
163 @Override
164 publicbooleanaccept(Filedir,Stringfilename){
165 returnfilename.endsWith(".mp3");
166 }
167 }
第172行的listFiles方法的參數(shù)為FilenameFilter接口類型。上述第162~167行定義了實現(xiàn)該接口的類MP3Filter,實現(xiàn)了該接口的抽象方法accept,用于過濾擴展名為.mp3的文件。
168 privatevoidMP3PlayList(){
169 ArrayList<HashMap<String,String>>mp3NameList=
177 }
178 }
179 SimpleAdapterlistAdapter=newSimpleAdapter(this,mp3NameList,
180 R.layout.mp3list,
181 newString[]{"mp3_name"},
182 newint[]{R.id.mp3name});
183 lvMP3List.setAdapter(listAdapter);
184 }
185}
8.2服務(Service)
例8.2
背景音樂播放實例。
例8.2的運行結果如圖8-4所示,當點擊“播放”按鈕時,啟動服務,服務將播放一段輕音樂“ghsy.mp3”。如果點擊“暫?!卑粹o,則停止服務,服務將停止播放音樂。當點擊“退出”按鈕(圖8-4(b)中最右側的按鈕)時,將關閉當前應用程序界面,此時音樂繼續(xù)播放,因為服務還在繼續(xù)。
新建工程ex08_02,應用名為MyMP3ServiceApp,包名為cn.jxufe.zhangenhe,活動界面名為MyMP3ServiceAct。工程ex08_02的結構如圖8-5所示。圖8-4工程ex08_2執(zhí)行結果圖8-5工程ex08_02文件目錄結構由圖8-5可知,工程ex08_02包括源文件MyMP3ServiceAct.java、MyService.java,布局文件main.xml,音頻文件ghsy.mp3(用作服務播放的背景音樂),配置文件AndroidManifest.xml以及圖像資源文件exit.png、play1.png、play2.png、stop1.png和stop2.png等。其中,圖像文件用于播放控制按鈕的圖標顯示,如圖8-4所示。
由于工程ex08_02中有服務,因此其配置文件AndroidManifest.xml的內容如下:
1<?xmlversion="1.0"encoding="utf-8"?>
2<manifestxmlns:android="/apk/res/android"
3package="cn.jxufe.zhangenhe"上述代碼中,第15~20行為服務配置,第17行聲明了服務的Intent動作名為“myMP3ServIt”。
工程ex08_02的布局如圖8-4所示,它包括三個圖像按鈕控件。其布局文件main.xml代碼如下:
1<?xmlversion="1.0"encoding="utf-8"?>
2<AbsoluteLayout
3android:id="@+id/widget0"
4android:layout_width="fill_parent"
5android:layout_height="fill_parent"
6xmlns:android="/apk/res/android"
7android:background="@drawable/darkgray"
8>
9<ImageButton
10android:id="@+id/imbplay"
11android:layout_width="80px"
12android:layout_height="80px"
13android:layout_x="40px"
14android:layout_y="70px"
15android:src="@drawable/play1"
16android:scaleType="fitCenter"
17android:onClick="myPlayMD"
18>
19</ImageButton>
20<ImageButton
21android:id="@+id/imbstop"
22android:layout_width="80px"
23android:layout_height="80px"
24android:layout_x="160px"
25android:layout_y="70px"
26android:src="@drawable/stop1"
27android:scaleType="fitCenter"
28android:onClick="myStopMD"
29>
30</ImageButton>
31<ImageButton
32android:id="@+id/imbexit"
33android:layout_width="80px"
34android:layout_height="80px"
35android:layout_x="280px"
36android:layout_y="70px"
37android:src="@drawable/exit"
38android:scaleType="fitCenter"
39android:onClick="myExitMD"
40>
41</ImageButton>
42</AbsoluteLayout>上述代碼的第17、28和39行聲明了三個圖像按鈕控件的點擊事件方法分別為myPlayMD、myStopMD和myExitMD。
源文件MyMP3ServiceAct.java的內容如下所示:
1packagecn.jxufe.zhangenhe;
2
3importandroid.app.Activity;
4importandroid.content.Intent;
5importandroid.os.Bundle;
6importandroid.view.View;
7importandroid.widget.ImageButton;
8
9publicclassMyMP3ServiceActextendsActivity{
10 privateImageButtonimbplay,imbstop;
11 privatebooleanblplay=true;
12 privatebooleanblstop=false;
13 privateIntentit;
14@Override
15publicvoidonCreate(BundlesavedInstanceState){
16super.onCreate(savedInstanceState);
17setContentView(R.layout.main);
18myInitGUI();
19}
20privatevoidmyInitGUI(){第13行定義Intent對象it,第25行得到it對象。
27 publicvoidmyPlayMD(Viewv){
28 if(blplay){
29 startService(it);
30 blplay=false;
31 blstop=true;
32 imbstop.setImageDrawable(getResources().getDrawable(R.drawable.stop1));
33 imbplay.setImageDrawable(get
Resources().getDrawable(R.drawable.play2));
34 }
35 }當點擊“播放”按鈕控件時,執(zhí)行第27~35行的方法myPlayMD,第29行調用方法startService啟動服務。
36 publicvoidmyStopMD(Viewv){
37 if(blstop){
38 stopService(it);
39 blstop=false;
40 blplay=true;
41 imbstop.setImageDrawable(getResources().getDrawable(R.drawable.stop2));
42 imbplay.setImageDrawable(getResources().getDrawable(R.drawable.play1));
43 }
44 }當點擊“停止”按鈕控件時,執(zhí)行第36~44行的方法myStopMD,第38行調用方法stopService停止服務。
45 publicvoidmyExitMD(Viewv){
46 this.finish();
47 }
48}
當點擊“關閉”按鈕(圖8-4(b)中圈住的按鈕)時,執(zhí)行上述代碼,關閉當前應用界面。
源文件MyService.java的內容如下所示:
1packagecn.jxufe.zhangenhe;
2
3importandroid.app.Service;
4importandroid.content.Intent;
5importandroid.media.MediaPlayer;
6importandroid.os.IBinder;
7
8publicclassMyServiceextendsService{
9 privateMediaPlayermp;
10 @Override
11 publicIBinderonBind(Intentarg0){
12 returnnull;
13 }
14 @Override
15 publicvoidonStart(Intentintent,intstartId){
16 super.onStart(intent,startId);
17 mp=MediaPlayer.create(this,R.raw.ghsy);
18 mp.start();
19 }
當服務啟動時自動調用onStart方法,第17行從資源中取到音頻媒體文件,第18行調用start方法播放音樂。
20 @Override
21 publicvoidonDestroy(){
22 super.onDestroy();
23 mp.stop();
24 }
25}當服務停止時自動調用onDestroy方法,第23行調用stop方法停止播放音樂。
從工程ex08_02可知,服務對外部調用提供的方法為startService和stopService。當外部調用startService方法時,服務將自動執(zhí)行onStart方法;當外部調用stopService方法時,服務將自動執(zhí)行onDestroy方法。所謂的“自動”是指Android系統(tǒng)管理了這些調用工作。
8.3視頻文件播放
例8.3
視頻(包括音頻)播放器實例。
新建工程ex08_03,應用名為MyMP4PlayerApp,包名為cn.jxufe.zhangenhe,活動界面名為MyMP4PlayerAct。工程ex08_03實現(xiàn)的功能如圖8-6所示,程序啟動后的界面如圖8-6(a)所示,點擊“wolf.MP4”文件后點擊“播放”按鈕,如圖8-6(b)所示;點擊“bear.3GP”文件后點擊“播放”按鈕如圖8-6(c)所示;點擊“gln_tt.mp3”音頻文件后點擊“播放”按鈕如圖8-6(d)所示,即工程ex08_03可以播放音頻和視頻文件。圖8-6工程ex08_03執(zhí)行結果工程ex08_03的布局如圖8-6所示,其布局文件main.xml的內容如下所示:
1<?xmlversion="1.0"encoding="utf-8"?>
2<AbsoluteLayout
3android:id="@+id/widget0"
4android:layout_width="fill_parent"
5android:layout_height="fill_parent"
6xmlns:android="/apk/res/android"
7android:background="@drawable/darkgray"
8>
9<TextView
10android:id="@+id/textview"
11android:layout_width="200px"
12android:layout_height="50px"
13android:text=""
14android:layout_x="20px"
15android:layout_y="10px"
16android:textColor="@drawable/green"
17>
18</TextView>采用絕對布局方式,在左上角(20,10)位置處放置靜態(tài)文本框控件,其ID號為textview。
19<SurfaceView
20android:id="@+id/screen"
21android:layout_x="0px"
22android:layout_y="60px"
23android:layout_width="480px"
24android:layout_height="320px"
25>
26</SurfaceView>靜態(tài)文本框下面放置SurfaceView控件,如第19~26行所示,用于顯示視頻圖像。
27<SeekBar
28android:id="@+id/seekbar"
29android:layout_x="10px"
30android:layout_y="390px"
31android:layout_height="wrap_content"
32android:layout_width="460px"
33android:max="100"
34android:progress="0"
35>
36</SeekBar>
Surface控件下面放置進度條控件,如第27~36行所示。
37<ImageButton
38android:id="@+id/imbplay"
39android:layout_width="80px"
40android:layout_height="80px"
41android:layout_x="20px"
42android:layout_y="460px"
43android:src="@drawable/play1"
44android:scaleType="fitCenter"
45android:onClick="myPlayMD"
46>
47</ImageButton>
48<ImageButton
49android:id="@+id/imbpause"
50android:layout_width="80px"
51android:layout_height="80px"
52android:layout_x="110px"
53android:layout_y="460px"
54android:src="@drawable/pause1"
55android:scaleType="fitCenter"
56android:onClick="myPauseMD"
57>
58</ImageButton>
59<ImageButton
60android:id="@+id/imbstop"
61android:layout_width="80px"
62android:layout_height="80px"
63android:layout_x="200px"
64android:layout_y="460px"
65android:src="@drawable/stop1"
66android:scaleType="fitCenter"
67android:onClick="myStopMD"
68>
69</ImageButton>在屏幕垂直位置460px處水平放置三個圖像按鈕,如第37~69行所示,分別為“播放”、“暫?!焙汀巴V埂卑粹o,其事件方法依次為myPlayMD、myPauseMD和myStopMD。
70<ListView
71android:id="@+id/listview"
72android:layout_width="400px"
73android:layout_height="230px"
74android:layout_x="40px"
75android:layout_y="560px"
76>
77</ListView>
78</AbsoluteLayout>第70~77行的ListView控件用于顯示SD卡上的音頻和視頻文件。
列表框布局文件medialist.xml的內容如下所示:
1<?xmlversion="1.0"encoding="utf-8"?>
2<AbsoluteLayout
3android:id="@+id/widget0"
4android:layout_width="fill_parent"
5android:layout_height="fill_parent"
6xmlns:android="/apk/res/android"
7>
8<TextView
9android:id="@+id/filename"
10android:layout_width="wrap_content"
11android:layout_height="wrap_content"
12android:text="TextView"
13android:layout_x="10px"
14android:layout_y="10px"
15android:textColor="@drawable/yellow"
16>
17</TextView>
18</AbsoluteLayout>
上述列表框布局中包含一個TextView控件,用于顯示音頻或視頻文件的文件名。源文件MyMP4PlayerAct.java的內容如下所示,在此重點介紹與工程ex08_01中文件MyMP3PlayerAct.java不同的地方。
1packagecn.jxufe.zhangenhe;
2
3importjava.io.File;
4importjava.io.FilenameFilter;
5importjava.io.IOException;
6importjava.util.ArrayList;
7importjava.util.HashMap;
8importjava.util.Timer;
9importjava.util.TimerTask;
10importandroid.app.Activity;
11importandroid.media.AudioManager;
12importandroid.media.MediaPlayer;
13importandroid.media.MediaPlayer.OnCompletionListener;
14importandroid.os.Bundle;
15importandroid.view.SurfaceHolder;
16importandroid.view.SurfaceView;
17importandroid.view.View;
18importandroid.view.Window;
19importandroid.view.WindowManager;
20importandroid.widget.AdapterView;
21importandroid.widget.AdapterView.OnItemClickListener;
22importandroid.widget.ImageButton;
23importandroid.widget.ListView;
24importandroid.widget.SeekBar;
25importandroid.widget.SimpleAdapter;
26importandroid.widget.TextView;
27
28publicclassMyMP4PlayerActextendsActivity
29 implementsSeekBar.OnSeekBarChangeListener{
30 privateSeekBarmySeekbar;
31 privateTextViewmytv;
32 privateImageButtonimbplay,imbpause,imbstop;
33 privateListViewlvMP4List;
34 privatebooleanblstop=false;
35 privateintblpause=0;
36 privatestaticfinalStringMP3PATH="/sdcard/";
37 privateMediaPlayermyPlayer;
38 privateTimertimer;
39 privateTimerTasktimerTask;
40 privatebooleanstopTrack=false;
41 privateSurfaceViewscreen;
42 privateSurfaceHolderscrholder;第41行定義SurfaceView類的對象screen,第42行定義SurfaceHolder類的對象scrholder。
43@Override
44publicvoidonCreate(BundlesavedInstanceState){
45super.onCreate(savedInstanceState);
46requestWindowFeature(Window.FEATURE_NO_TITLE);
47getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
48 WindowManager.LayoutParams.
FLAG_FULLSCREEN);
49setContentView(R.layout.main);
50myInitGUI();
51}
第46行設置窗口不顯示標題。第47、48行設置不顯示狀態(tài)欄,這里的狀態(tài)欄是指窗口中最頂部的提示信號強度等手機狀態(tài)的橫欄。
52privatevoidmyInitGUI(){
53 mySeekbar=(SeekBar)findViewById(R.id.seekbar);
54 mySeekbar.setMax(100);
55 mySeekbar.setProgress(0);
56 mySeekbar.setOnSeekBarChangeListener(this);
57 mytv=(TextView)findViewById(R.id.textview);
58 imbplay=(ImageButton)findViewById(R.id.imbplay);
59 imbstop=(ImageButton)findViewById(R.id.imbstop);
60 imbpause=(ImageButton)findViewById(R.id.imbpause);
61 imbplay.setImageDrawable(getResources().getDrawable(R.drawable.play1));
第61行借助setImageDrawable方法設置圖像控件中顯示的圖標,用getResource方法得到資源對象,再調用getDrawable方法得到資源中的ID號為R.drawable.play1的圖形對象。第62、63行采用同樣的方法給圖像按鈕添加圖標。
62 imbstop.setImageDrawable(getResources().getDrawable(R.drawable.stop2));
63 imbpause.setImageDrawable(getResources().getDrawable(R.drawable.pause3));
64 lvMP4List=(ListView)findViewById(R.id.listview);
65 lvMP4List.setOnItemClickListener(newOnItemClickListener(){
66 @Override
67 publicvoidonItemClick(AdapterView<?>arg0,Viewarg1,intarg2,
68 longarg3){
69 TextViewtv_name=(TextView)arg1.findViewById(R.id.filename);
70 mytv.setText(tv_name.getText().toString());
71 }
72 });
73 MPPlayList();
74 myPlayer=newMediaPlayer();
第74行創(chuàng)建myPlayer對象。
75 timer=newTimer();
76 timerTask=newTimerTask(){
77 @Override第86行得到screen對象;第87得到scrholder對象,通過該對象訪問screen對象;第88~101行添加scrholder的回調函數(shù);第102行設置scrholder的顯示類型為SURFACE_TYPE_PUSH_BUFFERS,該Android系統(tǒng)常量值為3,此時Android系統(tǒng)將取消setType方法和顯示類型常量,不建議程序員使用方法setType。這里必須有第102行,這樣才能保證視頻顯示正常。第102行等效于“scrholder.setType(3);”。
104@Override
105publicvoidonProgressChanged(SeekBarseekBar,intprogress,booleanfromTouch){
106}
107 @Override
108 publicvoidonStartTrackingTouch(SeekBarseekBar){
109 stopTrack=true;
110 }
111 @Override
112 publicvoidonStopTrackingTouch(SeekBarseekBar){
113 stopTrack=false;
114 myPlayer.seekTo(se
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 立春科學解讀
- 專用油品運輸業(yè)務協(xié)議(2024年度)版B版
- 2025年高效節(jié)水打機井建設與維護合同2篇
- 24節(jié)氣:大寒 相關英語練習
- 16《金色的草地》說課稿-2024-2025學年三年級上冊語文統(tǒng)編版
- 2025年度智慧交通PPP項目合作協(xié)議3篇
- 個人過橋融資合同2024年適用樣本版
- 氫能燃料電池研發(fā)合作合同
- 2025版寵物領養(yǎng)中心公益項目合作協(xié)議3篇
- 2024年美發(fā)美容師個人服務合同
- 綠色供應鏈管理制度內容
- 無錫市區(qū)2024-2025學年四年級上學期數(shù)學期末試題一(有答案)
- 心理學基礎知識考試參考題庫500題(含答案)
- 血液凈化中心院內感染控制課件
- 一年級數(shù)學(上)計算題專項練習集錦
- 消防安全應急預案下載
- 年產(chǎn)1.5萬噸長鏈二元酸工程建設項目可研報告
- 《北航空氣動力學》課件
- 紡織廠消防管道安裝協(xié)議
- 【MOOC】思辨式英文寫作-南開大學 中國大學慕課MOOC答案
- 期末測試卷(試題)-2024-2025學年五年級上冊數(shù)學北師大版
評論
0/150
提交評論