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

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

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

Android MediaPlayer實(shí)現(xiàn)音樂(lè)播放器

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="單擊“開(kāi)始”按鈕播放音頻" /> 
 
  <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對(duì)象 
  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獨(dú)享 
    }else{ 
      hint.setText("要播放的音頻文件不存在!"); 
      button1.setEnabled(false); 
      return; 
    } 

4、編寫(xiě)play()方法

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

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

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

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

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

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

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、重寫(xiě)Activity的onDestroy()方法

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

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

相關(guān)文章

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

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

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

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

    這篇文章主要為大家介紹了正確在Flutter中添加webview實(shí)現(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策略與思路問(wèn)題的詳解

    Android生存指南之:解Bug策略與思路問(wèn)題的詳解

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

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

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

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

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

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

    在Android應(yīng)用開(kāi)發(fā)中,風(fēng)格和設(shè)計(jì)或許不是最關(guān)鍵的要素,但它們?cè)跊Q定Android應(yīng)用成功與否上確實(shí)扮演重要的角色,以下是10個(gè)Android應(yīng)用的UI設(shè)計(jì)技巧,還有個(gè)附加技巧,感興趣的朋友可以了解下哦
    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)化的文章,主要是通過(guò)各種工具分析,使用合理的技巧優(yōu)化APP的體驗(yàn),提升APP的流暢度,但關(guān)于內(nèi)存優(yōu)化的文章很少有看到。下面是我在實(shí)踐過(guò)程中使用的一些方法,很多都是不太成熟的項(xiàng)目,只是將其作為一種處理方式分享給大家。
    2016-08-08
  • Android 自定義底部上拉控件的實(shí)現(xiàn)方法

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

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

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

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

最新評(píng)論

奉新县| 东丰县| 屯留县| 镇安县| 洪洞县| 浙江省| 沂源县| 蕉岭县| 桦南县| 利辛县| 阆中市| 增城市| 区。| 外汇| 南汇区| 郧西县| 金寨县| 蛟河市| 碌曲县| 珠海市| 象山县| 曲周县| 筠连县| 长兴县| 同心县| 嘉禾县| 泰兴市| 息烽县| 巴彦淖尔市| 梁山县| 西盟| 临海市| 祥云县| 花垣县| 高安市| 湘阴县| 双峰县| 娄底市| 宣威市| 商丘市| 黄大仙区|