freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

ophone手機音樂功能實現(xiàn)研究(doc畢業(yè)設計論文)(編輯修改稿)

2025-07-25 08:34 本頁面
 

【文章內(nèi)容簡介】 表中刪除相應歌曲信息,同時默認歌曲指向下一首歌曲。播放器的狀態(tài)有播放、暫停、停止三種。: 播放器的狀態(tài)圖: 播放文件的狀態(tài)圖由上圖可以看出,當用戶需要播放文件時,點擊播放或者雙擊播放文件時,則產(chǎn)生一個事件,調(diào)用Play函數(shù)完成播放。播放某一音樂文件的時候,播放器可能出于不同的狀態(tài),對于不同的狀態(tài),音樂系統(tǒng)運行流程是不一樣的。: 播放歌曲的活動圖二、 Ophone音樂功能的詳細設計Ophone音樂功能開發(fā)的時候分為幾個部分,分別為src、gen和res文件夾。而src內(nèi)部主要是java的源程序代碼,主要是實現(xiàn)音樂功能的函數(shù)模塊。gen內(nèi)部主要包含的是是一個R類,主要包含的是各個部分的在這里的申明,這個文件夾里面的內(nèi)容無需編寫,只要其他部分編寫,其內(nèi)部會自動生成相應的內(nèi)容。顯示在模擬器上面的畫面內(nèi)容的主要是在res文件夾中的,這個文件夾又分為3個部分,分別為draw、layout和values部分,drawable中存儲的是模擬器中出現(xiàn)的圖片,其他兩個文件夾是編寫的xml程序的,主要是在模擬器上顯示相應的內(nèi)容。OPhone系統(tǒng)提供了MediaScanner,MediaProvider,MediaStore等接口,并且提供了一套數(shù)據(jù)庫表格,通過Content Provider的方式提供給用戶。當手機開機或者有SD卡插拔等事件發(fā)生時,系統(tǒng)將會自動掃描SD卡和手機內(nèi)存上的媒體文件,將相應的信息放到定義好的數(shù)據(jù)庫表格中。在這個程序中,我們不需要關心如何去掃描手機中的文件,只要了解如何查詢和使用這些信息就可以了。MediaStore中定義了一系列的數(shù)據(jù)表格,通過ContentResolver提供的查詢接口,我們可以得到各種需要的信息音樂文件的播放功能是由MediaPlayer類實現(xiàn)的,MediaPlayer提供了常用的接口,比如播放,暫停,停止等。:現(xiàn)在可以開始動手構建簡單的播放器示例程序。創(chuàng)建工程在Eclipse開發(fā)環(huán)境中創(chuàng)建一個新的Android Project.File New Android Project.設置工程名為MusicPlayerDemo, 設置packages名為  指定程序的Application,添加MusicPlayerDemoApp usicPlayerDemoApp類,它繼承自 。Application類用來存儲程序的狀態(tài),它存在于整個程序的生命周期之中。,指定MusicPlayerDemoApp為示例程序的Application. 這里需要注意Application的兩個函數(shù): onCreate() 和 onTerminate(). 當程序開始運行時,onCreate()函數(shù)會首先被調(diào)用,此時沒有任何其他的對象在運行,在這里我們可以進行一些初始化的工作。當程序結束時, onTerminate()函數(shù)會被調(diào)用,程序進程將會退出,可以在此做一些最終的清理工作。需要注意的是,當因為系統(tǒng)資源緊張等問題,程序被系統(tǒng)kill的時候,onTerminate()不會被調(diào)用到,程序將直接退出。管理音樂信息的類MusicDBController為了使接口整潔,便于管理和使用,管理音樂信息的方法統(tǒng)一封裝在MusicDBController類中。 MusicDBController采用單例模式,使程序中只有唯一的實例。我們傳入MusicPlayerDemoApp 作為Context生成Content Resolver,用來查詢媒體庫。現(xiàn)在,修改MusicPlayerDemoApp,添加一個MusicDBController的成員,并在onCreate()中初始化它。private MusicDBController mDBContorller = null。 public void onCreate() { // TODO Autogenerated method stub ()。 // init MusicDBController mDBContorller = (this)。 } 并且提供一個獲取MusicDBController的接口: public MusicDBController getMusicDBController(){ return mDBContorller。這樣程序中的任何Activity和Serivce都可以通過getApplicatio()函數(shù)得到MusicPlayerDemoApp,再通過getMusicDBController()接口獲取MusicDBController,進而獲取所需要的媒體信息。展示媒體庫-MusicListActivity 和 MusicListAdapter。首先添加MusicListAdapter,它繼承自SimpleCursorAdapter。通過重載bindView()函數(shù), 把媒體庫信息綁定到指定的ListView上。,它的布局定義如下:: 圖片 左上文字 左下文字 右下文字public void bindView(View view, Context context, Cursor cursor) { (view, context, cursor)。 TextView titleView = (TextView) ()。 TextView artistView = (TextView) ()。 TextView durationView = (TextView) ()。 ImageView imageView = (ImageView) ()。 // Set icon ()。 // Set track name ((()))。 // Set artist name ((()))。 // Set duration int duration = (())。 (makeTimeString(duration))。 }現(xiàn)在可以來添加我們的第一個Activity -MusicListActivity,它以List的形式展示了所有歌曲。MusicListActivity繼承自ListActivity。在onCreate()中獲取MusicDBController的實例,為獲取歌曲信息做準備。播放-使用Service現(xiàn)在需要考慮如何來播放這些媒體庫中的文件了。為了達到后臺播放的效果,需要使用Service。當程序的所有Activity都退出后,Service仍然可以在后臺運行。在這個示例中我們使用Local Service,它與應用程序運行在同一個進程中。首先,創(chuàng)建一個MusicPlaybackService類,重載onBind方法,返回自定義的LocalBinder,通過LocalBinder的getService()方法就可以獲得MusicPlaybackService的句柄了。privatefinalIBindermBinder=newLocalBinder()。publicclassLocalBinderextendsBinder{publicMusicPlaybackServicegetService(){return}}@OverridepublicIBinderonBind(Intentintent){//TODOAutogeneratedmethodstubreturnmBinder。}繼續(xù)完成MusicPlaybackService的基本構架,添加一個MediaPlayer成員,并在onCreate()函數(shù)中對其進行初始化,它將負責音樂播放的主要功能。privateMediaPlayermMediaPlayer=null。publicvoidonCreate(){()。mMediaPlayer=newMediaPlayer()。}  構架完成MusicPlaybackService的基本架構后,我們要定義一些常用的控制接口了,其他模塊通過這些接口,可以控制音樂的播放,暫停,停止等功能。1. publicvoidsetDataSource(Stringpath){try{()。(path)。()。}catch(IOExceptione){return。}catch(IllegalArgumentExceptione){return。}}publicvoidstart(){()。}publicvoidstop(){()。}publicvoidpause(){()。}publicbooleanisPlaying(){return()。}publicintgetDuration(){return()。}publicintgetPosition(){return()。}publiclongseek(longwhereto){((int)whereto)。returnwhereto。}最后,,添加MusicPlaybackService的定義。serviceandroid:name=.MusicPlaybackServiceandroid:exported=trueintentfilteractionandroid:name=//intentfilter/serviceservice android:name=.MusicPlaybackService android:exported=true intentfilter action android:name= / /intentfilter /service6播放歌曲MusicPlaybackService準備就緒,我們可以利用它來播放歌曲了。修改MusicListActivity,在 onCreate() 中通過startService()函數(shù)啟動MusicPlaybackService,并通過bindService()函數(shù)與之綁定。當綁定完成時,ServiceConnection的 onServiceConnected()接口將被調(diào)用。privateMusicPlaybackServicemPlaybackService=null。privateServiceConnectionmPlaybackConnection=newServiceConnection(){publicvoidonServiceConnected(ComponentNameclassName,IBinderservice){mPlaybackService=(()service).getService()。}publicvoidonServiceDisconnected(ComponentNameclassName){mPlaybackService=null。}}。publicvoidonCreate(BundlesavedInstanceState){(savedInstanceState)。setContentView()。mDBController=((MusicPlayerDemoApp)getApplication()).getMusicDBController()。//bindplaybackservicestartService(newIntent(this,))。bindService(newIntent(this,),mPlaybackConnection,)。為MusicListActivity添加點擊事件處理,當用戶點擊一個音樂item時,會開始自動播放該歌曲,當用戶點擊一個item時,onListItemClick()函數(shù)會被調(diào)用。protectedvoidonListItemClick(ListViewl,Viewv,intposition,longid){//TODOAutogeneratedmethodstub(l,v,position,id)。if(mCursor==null||()==0){return。}(position)。Stringurl=mCursor.getString(mCursor.getColumnIndexOrThrow())。(url)。()。}控制-使用Intent和Broadcast Receiver目前我們只能播放音樂,還無法控制音樂的播放,暫停,停止。我們進一步來完善這個播放程序,給它添加兩個控制按鈕。?xml version= encoding=UTF8? LinearLayout android:id=@+id/widget1 android:layout_width=fill_parent android:layout_height=fill_parent xmlns:android= android:orientation=vertical RelativeLayout android:id=@+id/control_panel android:orientation=horizontal android:layout_width=fill_parent android:layout_height=wrap_content TextView android:id=@+id/show_text a
點擊復制文檔內(nèi)容
電大資料相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1