后台服务播放器

来源:互联网 发布:android电商app源码 编辑:程序博客网 时间:2024/06/05 00:40

这个播放器主要利用service组件实现的后台播放。

点“播放”音乐开始播放,点“暂停”音乐暂停并可以再点击“播放”时继续播放音乐,点“停止”音乐停止并在点“播放”时重新播放音乐,点“退出”音乐停止并退出当前页面。

需要先在res目录下新建一个文件raw文件(其他文件名可能会出错),然后在那目录下放好音乐。



响应按键并传递信息的java代码

package com.example.mp3_zzl;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;import android.view.View;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void click(View zzl){Intent serviceIntent=new Intent(MainActivity.this, mp3.class);int fvk=-1;switch (zzl.getId()) {case R.id.btn_start:fvk=1;break;case R.id.btn_pause:fvk=2;break;case R.id.btn_stop:fvk=3;break;case R.id.btn_exit:fvk=4;stopService(serviceIntent);MainActivity.this.finish();break;default:break;}Bundle bundle=new Bundle();    //new一个bundle 相当于新建一个袋子bundle.putInt("msg", fvk);//把响应按钮相应的值放入bundleserviceIntent.putExtras(bundle);//把袋子bundle放入适配器serviceIntentstartService(serviceIntent);//启动service后台服务组件}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}



接收信息并利用switch case语句 判定接收到的对应按键信息 调用私有化的类来实现功能

package com.example.mp3_zzl;import java.io.IOException;import android.app.Service;import android.content.Intent;import android.media.MediaPlayer;import android.os.Bundle;import android.os.IBinder;public class mp3 extends Service {private MediaPlayer mp;@Overridepublic void onCreate() {// TODO 自动生成的方法存根if(mp==null){mp=mp.create(mp3.this, R.raw.abc);mp.setLooping(false);               //不重复播放歌曲}super.onCreate();}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {// TODO 自动生成的方法存根Bundle bundle=intent.getExtras();int fvk=bundle.getInt("msg");switch (fvk) {case 1:play();break;case 2:pause();break;case 3:stop();break;default:break;}return super.onStartCommand(intent, flags, startId);}@Overridepublic IBinder onBind(Intent arg0) {// TODO 自动生成的方法存根return null;}@Overridepublic void onDestroy() {// TODO 自动生成的方法存根if (mp!=null){mp.stop();mp.release();                            //释放资源}super.onDestroy();}private void play() {if(!mp.isPlaying()){mp.start();}}private void pause() {if(mp!=null&&mp.isPlaying()){mp.pause();}}private void stop(){if(mp!=null){mp.stop();mp=mp.create(mp3.this, R.raw.abc);   //stop()类调用以后整个生命周期就停止,要从新加载MP3文件才能播放
}}}

1:重点利用好onCreate(),onStart(),onDestroy()。

2:写程序时重点思考如何实现自己想要的功能和操作

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 人在看守所神经怎么办 看守所里有乙肝怎么办 申诉法院不受理怎么办 拘留通知家里打电话怎么办 骑三轮车被拘留怎么办 在看守所想上诉怎么办 南京老人去世后怎么办 吸毒强戒两年家人该怎么办 犯人在监狱里病亡怎么办 父母去世监狱人怎么办 公司不续签合同怎么办 股票亏20个点后怎么办 摩托车给扣了怎么办 通知拘留跑了怎么办 假烟倒卖会怎么办 卖了40万假烟怎么办 刑事拘留15天了怎么办 治安传唤人不到怎么办 治安处罚有劣迹怎么办 学生怀孕了该怎么办 有病不能拘留那怎么办 拘留所不交伙食费怎么办 治安拘留不执行怎么办 释放证明书丢了怎么办 银行提前收贷款怎么办 存货周转天数高怎么办 欠款人没有财产怎么办 起诉后对方没钱怎么办 法院起诉人不到怎么办 治安拘留跑了怎么办 看守所里生病了怎么办 二审上诉被驳回怎么办 醉酒驾车取保候审以后怎么办 小案子证据不足怎么办 撞车不严重逃逸怎么办 被执行人没有财产执行怎么办 挖到人头了怎么办 取保保证金不退怎么办 被诬陷经济诈骗怎么办 醉驾刑事拘留后怎么办 被别人举报赌博怎么办