欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android簡易音樂播放器實現(xiàn)代碼

 更新時間:2020年07月29日 13:25:02   作者:Thm888  
這篇文章主要為大家詳細(xì)介紹了Android簡易音樂播放器的實現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Android音樂播放器的具體代碼,供大家參考,具體內(nèi)容如下

1.播放項目內(nèi)的音樂

package com.thm.g150820_android26_playmusic;
import Android.media.MediaPlayer; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ImageButton; 
import android.widget.SeekBar;

public class MainActivity extends AppCompatActivity {

private MediaPlayer mediaPlayer; 
private SeekBar seekBar;

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
seekBar = (SeekBar) findViewById(R.id.seekBar);

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
 @Override
 public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

 }

 @Override
 public void onStartTrackingTouch(SeekBar seekBar) {

 }

 @Override
 public void onStopTrackingTouch(SeekBar seekBar) {
 //獲取拖動結(jié)束之后的位置
 int progress = seekBar.getProgress();
 //跳轉(zhuǎn)到某個位置播放
 mediaPlayer.seekTo(progress);
 }
});
}

public void isPlayOrPause(View view){ 
//把View強(qiáng)轉(zhuǎn)為ImageButton 
ImageButton imageButton = (ImageButton) view;

if(mediaPlayer==null) {
 //實例化MediaPlayer
 mediaPlayer = MediaPlayer.create(this, R.raw.yao);
 //開始播放
 mediaPlayer.start();
 //圖標(biāo)修改為暫停的圖標(biāo)
 imageButton.setImageResource(android.R.drawable.ic_media_pause);
 //獲取音樂的總時長
 int duration = mediaPlayer.getDuration();
 //設(shè)置進(jìn)度條的最大值為音樂的總時長
 seekBar.setMax(duration);

 new MyThre().start();

}//判斷如果音樂在播放
else if(mediaPlayer.isPlaying()){
 //就暫停音樂
 mediaPlayer.pause();
 //圖標(biāo)修改為播放的圖標(biāo)
 imageButton.setImageResource(android.R.drawable.ic_media_play);
}else{
 mediaPlayer.start();
 //圖標(biāo)修改為暫停的圖標(biāo)
 imageButton.setImageResource(android.R.drawable.ic_media_pause);
}
}

//寫內(nèi)部類 
class MyThre extends Thread{ 
@Override 
public void run() { 
super.run(); 
while(seekBar.getProgress()<=seekBar.getMax()){

 //獲取當(dāng)前音樂播放的位置
 int currentPosition = mediaPlayer.getCurrentPosition();

 //讓進(jìn)度條動起來
 seekBar.setProgress(currentPosition);
 }
 }
}
}

2.播放內(nèi)存卡中的音樂

package com.thm.g150820_android26_playmusic;

import android.media.AudioManager;
import android.media.MediaPlayer;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import android.widget.SeekBar;

import java.io.IOException;

public class MainActivity extends AppCompatActivity {

 private MediaPlayer mediaPlayer;
 private SeekBar seekBar;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 seekBar = (SeekBar) findViewById(R.id.seekBar);

 seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
 @Override
 public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

 }

 @Override
 public void onStartTrackingTouch(SeekBar seekBar) {

 }

 @Override
 public void onStopTrackingTouch(SeekBar seekBar) {
 //獲取拖動結(jié)束之后的位置
 int progress = seekBar.getProgress();
 //跳轉(zhuǎn)到某個位置播放
 mediaPlayer.seekTo(progress);
 }
 });
 }


 public void isPlayOrPause(View view){
 //把View強(qiáng)轉(zhuǎn)為ImageButton
 ImageButton imageButton = (ImageButton) view;

 if(mediaPlayer==null) {
 //實例化MediaPlayer
 //播放應(yīng)用內(nèi)的音樂
 //mediaPlayer = MediaPlayer.create(this, R.raw.yao);

 //播放內(nèi)存卡中的音樂
 mediaPlayer = new MediaPlayer();

 //設(shè)置類型
 mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
 //設(shè)置音樂路徑
 try {
 mediaPlayer.setDataSource(this, Uri.parse("storage/sdcard0/Music/a.mp3"));
 //播放之前準(zhǔn)備一下
 mediaPlayer.prepare();
 } catch (IOException e) {
 e.printStackTrace();
 }


 //開始播放
 mediaPlayer.start();
 //圖標(biāo)修改為暫停的圖標(biāo)
 imageButton.setImageResource(android.R.drawable.ic_media_pause);
 //獲取音樂的總時長
 int duration = mediaPlayer.getDuration();
 //設(shè)置進(jìn)度條的最大值為音樂的總時長
 seekBar.setMax(duration);

 new MyThre().start();

 }//判斷如果音樂在播放
 else if(mediaPlayer.isPlaying()){
 //就暫停音樂
 mediaPlayer.pause();
 //圖標(biāo)修改為播放的圖標(biāo)
 imageButton.setImageResource(android.R.drawable.ic_media_play);
 }else{
 mediaPlayer.start();
 //圖標(biāo)修改為暫停的圖標(biāo)
 imageButton.setImageResource(android.R.drawable.ic_media_pause);
 }
 }

 //寫線程內(nèi)部類
 class MyThre extends Thread{
 @Override
 public void run() {
 super.run();
 while(seekBar.getProgress()<=seekBar.getMax()){

 //獲取當(dāng)前音樂播放的位置
 int currentPosition = mediaPlayer.getCurrentPosition();

 //讓進(jìn)度條動起來
 seekBar.setProgress(currentPosition);
 }
 }
 }
}

3.添加讀取內(nèi)存的權(quán)限

更多關(guān)于播放器的內(nèi)容請點擊《java播放器功能》進(jìn)行學(xué)習(xí)。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一款適用于Android平臺的俄羅斯方塊

    一款適用于Android平臺的俄羅斯方塊

    這篇文章主要為大家詳細(xì)介紹了一款適用于Android平臺的俄羅斯方塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Android 中的 XRecyclerview的使用案例

    Android 中的 XRecyclerview的使用案例

    這篇文章主要介紹了Android 中的 XRecyclerview的使用案例,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • 解析:繼承ViewGroup后的子類如何重寫onMeasure方法

    解析:繼承ViewGroup后的子類如何重寫onMeasure方法

    本篇文章是對繼承ViewGroup后的子類如何重寫onMeasure方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • 詳談android 6.0 fuse文件系統(tǒng)的掛載和卸載問題

    詳談android 6.0 fuse文件系統(tǒng)的掛載和卸載問題

    今天小編就為大家分享一篇詳談android 6.0 fuse文件系統(tǒng)的掛載和卸載問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • Android APK反編譯技巧深入講解

    Android APK反編譯技巧深入講解

    這篇文章主要給大家介紹了關(guān)于Android APK反編譯技巧的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 協(xié)程作用域概念迭代RxTask?實現(xiàn)自主控制

    協(xié)程作用域概念迭代RxTask?實現(xiàn)自主控制

    這篇文章主要為大家介紹了協(xié)程作用域概念迭代RxTask實現(xiàn)自主控制詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Android控件PullRefreshViewGroup實現(xiàn)下拉刷新和上拉加載

    Android控件PullRefreshViewGroup實現(xiàn)下拉刷新和上拉加載

    這篇文章主要為大家詳細(xì)介紹了Android控件PullRefreshViewGroup實現(xiàn)下拉刷新和上拉加載效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Android Mms之:對話與聯(lián)系人關(guān)聯(lián)的總結(jié)詳解

    Android Mms之:對話與聯(lián)系人關(guān)聯(lián)的總結(jié)詳解

    本篇文章是對Android中對話與聯(lián)系人的關(guān)聯(lián)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • Android數(shù)據(jù)存儲之SQLite使用

    Android數(shù)據(jù)存儲之SQLite使用

    SQLite是D.Richard Hipp用C語言編寫的開源嵌入式數(shù)據(jù)庫引擎。它支持大多數(shù)的SQL92標(biāo)準(zhǔn),并且可以在所有主要的操作系統(tǒng)上運行
    2016-01-01
  • Android App如何防止抓包

    Android App如何防止抓包

    我們要知道常用的抓包方式有Charles和Fiddler,他們通過在手機(jī)網(wǎng)絡(luò)中添加代理的方式,拿到App的請求,這篇文章主要給大家介紹了關(guān)于Android中App如何防止抓包的相關(guān)資料,需要的朋友可以參考下
    2022-03-03

最新評論