編輯:關於Android編程
本文實例為大家分享了Android音樂播放器的具體代碼,供大家參考,具體內容如下
1.播放項目內的音樂
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) { //獲取拖動結束之後的位置 int progress = seekBar.getProgress(); //跳轉到某個位置播放 mediaPlayer.seekTo(progress); } }); } public void isPlayOrPause(View view){ //把View強轉為ImageButton ImageButton imageButton = (ImageButton) view; if(mediaPlayer==null) { //實例化MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.yao); //開始播放 mediaPlayer.start(); //圖標修改為暫停的圖標 imageButton.setImageResource(android.R.drawable.ic_media_pause); //獲取音樂的總時長 int duration = mediaPlayer.getDuration(); //設置進度條的最大值為音樂的總時長 seekBar.setMax(duration); new MyThre().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 MyThre extends Thread{ @Override public void run() { super.run(); while(seekBar.getProgress()<=seekBar.getMax()){ //獲取當前音樂播放的位置 int currentPosition = mediaPlayer.getCurrentPosition(); //讓進度條動起來 seekBar.setProgress(currentPosition); } } } }
2.播放內存卡中的音樂
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) { //獲取拖動結束之後的位置 int progress = seekBar.getProgress(); //跳轉到某個位置播放 mediaPlayer.seekTo(progress); } }); } public void isPlayOrPause(View view){ //把View強轉為ImageButton ImageButton imageButton = (ImageButton) view; if(mediaPlayer==null) { //實例化MediaPlayer //播放應用內的音樂 //mediaPlayer = MediaPlayer.create(this, R.raw.yao); //播放內存卡中的音樂 mediaPlayer = new MediaPlayer(); //設置類型 mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); //設置音樂路徑 try { mediaPlayer.setDataSource(this, Uri.parse("storage/sdcard0/Music/a.mp3")); //播放之前准備一下 mediaPlayer.prepare(); } catch (IOException e) { e.printStackTrace(); } //開始播放 mediaPlayer.start(); //圖標修改為暫停的圖標 imageButton.setImageResource(android.R.drawable.ic_media_pause); //獲取音樂的總時長 int duration = mediaPlayer.getDuration(); //設置進度條的最大值為音樂的總時長 seekBar.setMax(duration); new MyThre().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 MyThre extends Thread{ @Override public void run() { super.run(); while(seekBar.getProgress()<=seekBar.getMax()){ //獲取當前音樂播放的位置 int currentPosition = mediaPlayer.getCurrentPosition(); //讓進度條動起來 seekBar.setProgress(currentPosition); } } } }
3.添加讀取內存的權限
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持本站。
前言:那些年我們用過的顯示性能指標 相對其他 Android 性能指標(如內存、CPU、功耗等)而言,顯示性能(包括但不僅限於我們常說的“流暢度”)的概念本來就相對復雜
本文實例講述了Android ScrollView只能添加一個子控件問題解決方法。分享給大家供大家參考,具體如下:有下面一段代碼<?xml version=
android中,在進行耗時操作更新UI用到最多的方法就是Handler了,一般在子線程中進行耗時操作(訪問網絡等),然後發送消息到UI線程(主線程),使得界面得以更新。
Android Activity生命周期以及onSaveInstanceState、onRestoreInstanceState要點備忘 一般的,當