国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

安卓之音樂播放器

2019-11-07 23:53:29
字體:
來源:轉載
供稿:網友

Android 音樂播放器有很多種方式,首先由一個音樂播放器:

<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> //進度條 <SeekBar android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/main_seekbar" android:layout_weight="1" /> //播放按鈕 <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/ic_media_play" android:onClick="isPlayorPauser"/></LinearLayout>

第一種就是播放應用內的音頻文件,將你需要播放的音頻文件放入Raw文件中,調用MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.cd);取到raw文件中的音頻,再用MediaPlayer 的準備完成的監聽事件mediaPlayer.setOnPReparedListener() 中播放,mediaPlayer.start();方法。 第二種是內存卡里面音頻文件,首先實例化 MediaPlayer mediaPlayer = new MediaPlayer();再設置屬性。準備方法: mediaPlayer.prepare(); 第三種是播放網絡音樂(Tomcat),需要配置Tomcat,再一步準備:mediaPlayer.prepareAsync();

public class MainActivity extends AppCompatActivity { private SeekBar main_seekbar; private MediaPlayer mediaPlayer; private SurfaceView main_surfaceview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); main_seekbar = (SeekBar) findViewById(R.id.main_seekbar); //得到視頻播放器 main_surfaceview = (SurfaceView) findViewById(R.id.main_surfaceview); //給進度條設置點擊拖動事件 main_seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { //獲取拖動的進度 給mediaPlayer設置進度 int length=main_seekbar.getProgress(); mediaPlayer.seekTo(length); } }); } public void isPlayorPauser(View view) throws Exception{ final ImageButton imageButton= (ImageButton) view; //如果mediaPlayer有值 if (mediaPlayer==null) { //播放應用內的音頻文件 //mediaPlayer = MediaPlayer.create(this, R.raw.cd); //播放內存卡里面音頻文件 mediaPlayer = new MediaPlayer(); //設置音頻流的類型 mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); //設置音源 mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/kugou/mv/nlch.mp4")); //準備一下(內存卡) mediaPlayer.prepare(); /* //播放網絡音樂(Tomcat) mediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.135/internet.mp3")); //準備(異步準備) mediaPlayer.prepareAsync();*/ //設置準備完成的監聽// mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {// @Override// public void onPrepared(MediaPlayer mediaPlayer) { //將媒體播放器的捕捉的畫面展示到surfaceView mediaPlayer.setDisplay(main_surfaceview.getHolder()); //開始播放 mediaPlayer.start(); //設置按鈕改變圖片 imageButton.setImageResource(android.R.drawable.ic_media_pause); //獲取音樂的播放時長 int duration=mediaPlayer.getDuration(); //設置進度條的最大值(音樂的播放時長) main_seekbar.setMax(duration); new MyThread().start();// }// }); }else if (mediaPlayer.isPlaying()){ //開始就關閉 mediaPlayer.pause(); imageButton.setImageResource(android.R.drawable.ic_media_play); }else{ //關閉就開始 mediaPlayer.start(); imageButton.setImageResource(android.R.drawable.ic_media_pause); } } class MyThread extends Thread{ @Override public void run() { super.run(); //判斷拖動長度是否小于seekbar的最大長度 if (main_seekbar.getProgress()<=main_seekbar.getMax()){ //獲取音樂的當前播放位置 int c=mediaPlayer.getCurrentPosition(); //設置seekbar的位置 main_seekbar.setProgress(c); } } }}

最后,我在說一個控件,叫音頻池(SoundPool),雖然已經過時。但是還可以用。用來做一些混音。有興趣的可以了解下:

public class SoundPoolActivity extends AppCompatActivity { private SoundPool soundPool; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_soundpool); //實例化音頻池 soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC,0); //設置監聽事件(加載音頻) soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() { @Override public void onLoadComplete(SoundPool soundPool, int i, int i1) { //播放 soundPool.play(i,1,1,1,-1,1); } }); } public void playKFC(View view){ soundPool.load(this,R.raw.rooster,1); } public void playTwo(View view){ soundPool.load(this,R.raw.chimp,1); } public void playThree(View view){ soundPool.load(this,R.raw.crickets,1); } public void playFour(View view){ soundPool.load(this,R.raw.roar,1); } public void playDog(View view){ soundPool.load(this,R.raw.dogbark,1); } @Override protected void onDestroy() { super.onDestroy(); //退出應用程序時關閉音頻池 if(soundPool!=null){ soundPool.release(); soundPool=null; } }}
上一篇:設計模式 代理模式

下一篇:scaleType屬性

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 邯郸县| 肥西县| 武川县| 安西县| 平原县| 金门县| 长白| 沾化县| 柳江县| 蒙自县| 太仆寺旗| 江津市| 阿拉善盟| 泾阳县| 滨州市| 长岛县| 扎赉特旗| 定襄县| 大埔县| 惠安县| 乌苏市| 兰西县| 淮阳县| 洪雅县| 岐山县| 米泉市| 交城县| 万源市| 宁城县| 育儿| 临安市| 嵊州市| 宁武县| 共和县| 鹤峰县| 阿图什市| 和硕县| 宽城| 通海县| 杭锦旗| 博罗县|