最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android MediaPlayer實現(xiàn)音樂播放器實例代碼

 更新時間:2017年01月09日 17:28:27   作者:Jaer_zk  
這篇文章主要介紹了Android MediaPlayer實現(xiàn)音樂播放器實例代碼的相關(guān)資料,需要的朋友可以參考下

Android MediaPlayer實現(xiàn)音樂播放器

1、布局文件

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent" 
  android:orientation="vertical" > 
 
  <TextView 
    android:id="@+id/hint" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="10px" 
    android:text="單擊“開始”按鈕播放音頻" /> 
 
  <LinearLayout 
    android:id="@+id/linearLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 
  <Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="播放" /> 
 
  <Button 
    android:id="@+id/button2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:enabled="false" 
    android:text="暫停" /> 
 
  <Button 
    android:id="@+id/button3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:enabled="false" 
    android:text="停止" /> 
  </LinearLayout> 
</LinearLayout> 

2、MainActivity的成員變量

private MediaPlayer player;//MediaPlayer對象 
  private boolean isPause = false;//是否暫停 
  private File file;//要播放的音頻文件 
  private TextView hint;//聲明顯示提示信息的文本框 

3、onCreate()方法中獲取組件

final Button button1 = (Button)findViewById(R.id.button1);//獲取“播放”按鈕 
    final Button button2 = (Button)findViewById(R.id.button2);//獲取“暫停/繼續(xù)”按鈕 
    final Button button3 = (Button)findViewById(R.id.button3);//獲取“停止”按鈕 
    hint = (TextView)findViewById(R.id.hint);//獲取用于顯示提示信息的文本框 
    file = new File("/storage/emulated/0/qqmusic/song/喬維怡 - 白月光[mqms2].mp3");//獲取要播放的文件 
    if(file.exists()){ 
      player = MediaPlayer.create(this, Uri.parse(file.getAbsolutePath()));//創(chuàng)建MediaPlayer獨享 
    }else{ 
      hint.setText("要播放的音頻文件不存在!"); 
      button1.setEnabled(false); 
      return; 
    } 

4、編寫play()方法

private void play(){ 
    try { 
      player.reset(); 
      player.setDataSource(file.getAbsolutePath());//重新設(shè)置要播放的音頻 
      player.prepare();//預(yù)加載音頻 
      player.start();//開始播放 
      hint.setText("正在播放音頻....."); 
    } catch (Exception e) { 
      e.printStackTrace(); 
    } 
  } 

5、為MediaPlayer對象添加監(jiān)聽事件,播完重新播放

player.setOnCompletionListener(new OnCompletionListener() { 
      @Override 
      public void onCompletion(MediaPlayer mp) { 
        play();//重新開始播放 
      } 
    }); 

6、為播放添加單擊事件監(jiān)聽器

button1.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
        play();//開始播放音樂 
        if(isPause){ 
          button2.setText("暫停"); 
          isPause = false;//設(shè)置暫停標(biāo)記變量的值為false 
        } 
        button2.setEnabled(true);//“暫停/繼續(xù)”按鈕可用 
        button3.setEnabled(true);//"停止"按鈕可用 
        button1.setEnabled(false);//“播放”按鈕不可用 
      } 
    }); 

7、在“暫停/繼續(xù)”按鈕添加單擊事件監(jiān)聽器

button2.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
      if(player.isPlaying()&&!isPause){ 
        player.pause();//暫停播放 
        isPause = true; 
        ((Button)v).setText("繼續(xù)"); 
        hint.setText("暫停播放音頻..."); 
        button1.setEnabled(true);//“播放”按鈕可用 
      }else{ 
        player.start();//繼續(xù)播放 
        ((Button)v).setText("暫停"); 
        hint.setText("正在播放音頻..."); 
        isPause = false; 
        button1.setEnabled(false);//“播放”按鈕不可用 
      } 
    } 
  }); 

8、停止按鈕

button3.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
        player.stop();//停止播放 
        hint.setText("停止播放音頻..."); 
        button2.setEnabled(false);//“暫停/繼續(xù)”按鈕不可用 
        button3.setEnabled(false);//“停止”按鈕不可用 
        button1.setEnabled(true);//“播放”按鈕可用 
      } 
    }); 

9、重寫Activity的onDestroy()方法

@Override 
  protected void onDestroy() { 
    if(player.isPlaying()){ 
      player.stop();//停止音頻的播放 
    } 
    player.release();//釋放資源 
    super.onDestroy(); 
  } 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • Flutter基本組件Basics?Widget學(xué)習(xí)

    Flutter基本組件Basics?Widget學(xué)習(xí)

    本文詳細(xì)講解了Flutter基本組件Basics?Widget,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • 正確在Flutter中添加webview實現(xiàn)詳解

    正確在Flutter中添加webview實現(xiàn)詳解

    這篇文章主要為大家介紹了正確在Flutter中添加webview實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Android中Binder詳細(xì)學(xué)習(xí)心得

    Android中Binder詳細(xì)學(xué)習(xí)心得

    這篇文章主要介紹了Android中Binder詳細(xì)學(xué)習(xí)心得,并分析了Binder的詳細(xì)用法,需要的朋友參考下吧。
    2018-01-01
  • Android生存指南之:解Bug策略與思路問題的詳解

    Android生存指南之:解Bug策略與思路問題的詳解

    本篇文章是對Android 解Bug策略與思路的問題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 強制Android應(yīng)用使用某個Locale的方法

    強制Android應(yīng)用使用某個Locale的方法

    這篇文章主要介紹了強制Android應(yīng)用使用某個Locale的方法,涉及Android基于Locale進(jìn)行語言設(shè)置的相關(guān)技巧,需要的朋友可以參考下
    2015-10-10
  • Android登錄代碼MVP架構(gòu)詳解

    Android登錄代碼MVP架構(gòu)詳解

    這篇文章主要為大家詳細(xì)介紹了Android登錄代碼MVP架構(gòu)的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 提升Android應(yīng)用視覺吸引效果的10個UI設(shè)計技巧

    提升Android應(yīng)用視覺吸引效果的10個UI設(shè)計技巧

    在Android應(yīng)用開發(fā)中,風(fēng)格和設(shè)計或許不是最關(guān)鍵的要素,但它們在決定Android應(yīng)用成功與否上確實扮演重要的角色,以下是10個Android應(yīng)用的UI設(shè)計技巧,還有個附加技巧,感興趣的朋友可以了解下哦
    2013-01-01
  • 總結(jié)Android App內(nèi)存優(yōu)化之圖片優(yōu)化

    總結(jié)Android App內(nèi)存優(yōu)化之圖片優(yōu)化

    網(wǎng)上有很多大拿分享的關(guān)于Android性能優(yōu)化的文章,主要是通過各種工具分析,使用合理的技巧優(yōu)化APP的體驗,提升APP的流暢度,但關(guān)于內(nèi)存優(yōu)化的文章很少有看到。下面是我在實踐過程中使用的一些方法,很多都是不太成熟的項目,只是將其作為一種處理方式分享給大家。
    2016-08-08
  • Android 自定義底部上拉控件的實現(xiàn)方法

    Android 自定義底部上拉控件的實現(xiàn)方法

    下面小編就為大家分享一篇Android 自定義底部上拉控件的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • Android設(shè)置默認(rèn)鎖屏壁紙接口的方法

    Android設(shè)置默認(rèn)鎖屏壁紙接口的方法

    這篇文章主要介紹了Android默認(rèn)鎖屏壁紙接口的設(shè)置方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評論

嘉义县| 汾西县| 昭觉县| 芮城县| 抚宁县| 眉山市| 和静县| 巴里| 贵溪市| 蒙阴县| 措美县| 平南县| 乐亭县| 临江市| 定西市| 汨罗市| 沙湾县| 康平县| 中江县| 囊谦县| 通许县| 新巴尔虎右旗| 铅山县| 海伦市| 寿阳县| 芜湖县| 阳新县| 民权县| 东兰县| 许昌市| 恩平市| 定兴县| 临泉县| 静宁县| 青浦区| 武安市| 丰顺县| 浙江省| 四平市| 新安县| 绵竹市|