关闭

女兔帮

Android应用程序实践(IV):音乐播放器和多功能性共享音乐播放器实现

更新时间:2025-02-09 12:04:33 浏览:

平台友情提醒:凡是以各种理由向你收取费用,均有骗子嫌疑,请提高警惕,不要轻易支付。

应用程序实践(IV):和多功能性共享音乐播放器实现

应用程序背景音乐已实现。

创建通过方法。(残留);

对于音乐播放器的上下文,请接受此。()。t()上下文阻止了外部类的持有。在调用方法之前,您必须确保对象具有无效状态。否则,将报告错误。您可以在呼叫之前确定它是否为空。如果不是空的,请调用.reset()方法重置。

播放music.start()

暂停()

设置音乐播放event.ner(new。(){

void(mp){

//做…

});

顺序播放:

重置创建播放器,资源使用列表下一首歌 - >设置播放事件 - >音乐播放

在播放活动期间修改方法。

洗牌:

与顺序播放的区别在于,创建播放器时,列表中的资源会随机检索。

上一首歌,下一首歌

只需手动调用上述方法。

进度栏

使用。()要获取当前的播放位置。

多个接口共享音乐播放器

在编写音乐播放器代码时,我希望不仅在主界面中使用音乐按钮,还希望在数字选择界面,数字写作界面和其他接口中使用音乐按钮,我还希望能够控制播放和停止状态音乐随时。也就是说,应用程序的所有接口共享同一音乐播放器。

我的想法是定义类,将音乐播放器设置为静态对象,总共继承基本类,并实现音乐播放器共享。布局文件中的按钮有两个状态。音乐正在播放,音乐停止播放。切换时,我们需要根据当前的播放状态渲染音乐按钮。可以在每个布局文件中定义音乐按钮,以及我定义的布局文件,并在其他布局文件中使用标签引用。此功能如下实现代码。

当我们输入音乐按钮的接口时,需要完成三件事

1。调用设置布局文件2。获取按钮并根据状态3设置背景图片。播放音乐并设置播放以完成歌曲事件的切换

输入主要应用程序接口时,音乐播放器首次初始化并开始播放音乐。跳跃后,音乐播放器状态不会改变,并且只有根据玩家状态才能渲染控件。

因此,播放音乐并设置下一个歌曲的呼吁放置在主应用程序接口中,而渲染控件则放在过程中。

效果是,当您进入主界面时,您就会开始播放歌曲。之后,界面的任何切换都不会影响音乐播放,并且每个接口都可以停止或播放歌曲。

如果遇到报告无效指针错误的程序,该程序指向.e(r ..)和其他控制操作的呼叫,则可能会在呼叫的顺序中出现问题,并且在使用过程中尚未打电话,从而导致所获得的问题控制为无效。因此,在使用时,您必须在此之前确认已设置主布局。

特定的实施代码如下

public class BasicActivity extends Activity {
    static boolean isPlay = true;  //播放状态
    static MediaPlayer mediaPlayer;  //音乐播放器
    static int musicIndex = 0;  //当前播放序号
    static Context context;  //上下文
    static int[] musicList = {R.raw.high_hopes, R.raw.don_t_miss_now, R.raw.don_t_you_worry_child};  //播放歌曲列表
    Button music_btn;  //前台按钮控件
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        context = this.getApplication().getApplicationContext();
        //通过id获取布局文件中按钮控件
        music_btn = (Button) findViewById(R.id.btn_music);
        //根据播放状态渲染按钮图片
        if (isPlay) {
            music_btn.setBackgroundResource(R.mipmap.btn_music1);
        } else {
            music_btn.setBackgroundResource(R.mipmap.btn_music2);
        }
		//内存监视器
        RefWatcher refWatcher = App.getRefWatcher(this);
        refWatcher.watch(this);
    }
//点击事件,将播放器状态置反并渲染按钮图片
    public void onClick(View v) {
        if (isPlay) {
            if (mediaPlayer != null) {
                mediaPlayer.pause();
                music_btn.setBackgroundResource(R.mipmap.btn_music2);
                isPlay = false;
            }
        } else {
            mediaPlayer.start();
            music_btn.setBackgroundResource(R.mipmap.btn_music1);
            isPlay = true;
        }
    }
//设置播放器播放完毕回调函数,进行歌曲切换
    public static void setPlayList() {
        try {
            mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                @Override
                public void onCompletion(MediaPlayer mp) {
                    musicIndex++;
                    if (musicIndex >= musicList.length) {
                        musicIndex = 0;
                    }
                    playMusic(musicList[musicIndex]);
                    setPlayList();
                }
            });
        } catch (Exception e) {

Android应用程序实践(IV):音乐播放器和多功能性共享音乐播放器实现(图1)

e.printStackTrace(); } } //播放歌曲,保证播放器为空后创建新的播放器,开始播放音乐 public static void playMusic(int resId) { if (mediaPlayer != null) { mediaPlayer.reset(); } mediaPlayer = MediaPlayer.create(context, resId); mediaPlayer.start(); } }

----------------------------------------------------------------------------- ----------------------------------------------------------------------------- -----------------------------------------



    

----------------------------------------------------------------------------- ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- -------

//继承了BasicActivity
public class MainActivity extends BasicActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
	//必须先设置视图,而后调用BasicActivity的onCreate函数
	//若顺序反过来将会报空指针错误,因为没有渲染前台控件,则没有音乐按钮
    setContentView(R.layout.activity_main);
    super.onCreate(savedInstanceState);
    playMusic(musicList[musicIndex]);
    setPlayList();
}
//跳转游戏选择界面
 public void OnPlay(View v) {
   	 startActivity(new Intent(MainActivity.this, SelectActivity.class));
 }
//跳转关于我们界面
	public void OnAbout(View v) {
    	startActivity(new Intent(MainActivity.this, AboutActivity.class));
	}
}

----------------------------------------------------------------------------- ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- -------



    

你可能感兴趣的