編輯:關於Android編程
多媒體播放的狀態圖:
音樂播放狀態:Idle--setDataSource()-->Initialized--prepare()-->Prepared--start()-->Started[-->stZ喎?/kf/ware/vc/" target="_blank" class="keylink">vcCgpLS0+U3RvcGVkXS0tcGF1c2UoKS0tPlBhdXNlZC0tc3RhcnQoKS0tPlN0YXJ0ZWQuLi48YnI+CjwvcD4KPHA+PHByZSBjbGFzcz0="brush:java;">public class MainActivity extends Activity implements OnClickListener { private Button start, pause, stop, restart; private MediaPlayer player; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); start = (Button) findViewById(R.id.bt_start); pause = (Button) findViewById(R.id.bt_pause); stop = (Button) findViewById(R.id.bt_stop); restart = (Button) findViewById(R.id.bt_restart); start.setOnClickListener(this); pause.setOnClickListener(this); stop.setOnClickListener(this); restart.setOnClickListener(this); initMediaPlayer(); } private void initMediaPlayer() { // TODO Auto-generated method stub //初始化多媒體播放 player = new MediaPlayer(); try { //設置播放的音樂文件(這裡指定為sdcard的根目錄下的smile.mp3音樂文件) player.setDataSource(Environment.getExternalStorageDirectory().getAbsolutePath() + "/smile.mp3"); //准備就緒 player.prepare(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //音樂播放完畢執行的方法 player.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "播放完畢!", 0).show(); } }); //音樂播放出錯所執行的方法 player.setOnErrorListener(new OnErrorListener() { @Override public boolean onError(MediaPlayer mp, int what, int extra) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "播放出錯!", 0).show(); return false; } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.bt_start: //播放音樂 player.start(); break; case R.id.bt_pause: //暫停播放 player.pause(); break; case R.id.bt_stop: //停止播放 player.stop(); break; case R.id.bt_restart: try { //重新開始播放,先設置到准備就緒狀態 player.prepare(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } player.seekTo(0);//設置從頭開始播放 player.start();//開始播放音樂 break; default: break; } } }
//音頻播放常用方法: player.reset();//重置player player.release();//釋放player player.setLooping(true);//設置是否循環播放 player.getDuration();//獲取音樂播放時長 player.getCurrentPosition();//獲取當前播放的位置的時間 player.seekTo(10);//跳到指定的時間播放 player.isLooping();//獲取當前播放音樂是否循環播放 player.isPlaying();//獲取當前播放器是否正在播放 setOnCompletionListener() onCompletion(MediaPlayer mp)mp;//音樂播放完畢執行的方法 setOnErrorListener() onError() //音樂播放出錯所執行的方法
0.使用多線程下載會提升文件下載的速度,那麼多線程下載文件的過程是: (1)首先獲得下載文件的長度,然後設置本地文件的長度 HttpURLConnection.get
首先先建布局文件,界面很簡單,就是一個搜索框和下面的聯系人列表: 復制代碼 代碼如下: <?xml version=1.0 encoding=utf-8
Android通過PackageManagerService(後面簡稱Pms)進行包管理,其主要功能包括:用戶ID分配、包解析、包的安裝卸載等。本文不對Pms進行分析,
Android 4.0中添加了一個很有用的特性,那就是overView Screen功能,也就是最近任務預覽功能。這個功能提供了一個列表試圖,方便用戶簡單快捷地了解到最近