四大天王之全局服务Service,音乐播放器

大家晚上好,今晚讲的还是四大组件之一Service,它有两种方式实现全局服务与绑定服务,今天就先介绍全局服务,下次再奉上绑定服务。同样Service也是没有界面的,它主要运用在生命周期长的运用中,比如说:音乐播放器,下载与上传......,我这次是以简单的音乐播放器为例,为大家好好的介绍一下Service是一个怎样的东东。图如下。


布局很简单就不用说了,四个Button和一个TextVew组成,设置监听方法就行了。

1.BaseActivity.java

简单介绍一下这个是应用界面,可以这样理解,这是一个父类,其他子类可以调用其方法,可以省下很多多余的操作,代码流通性,可读性高。

public abstract class BaseActivity extends Activity {
 private String tag = null;

 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_base);
  tag = getClass().getSimpleName();

  initView();// 本类调用InitView方法
  inteData();// 本类调用inteData方法

 }

 // 播放音乐     startPlay
 public void startPlay(View v) {
  Log.v(tag, "startPlay");
  Toast.makeText(BaseActivity.this,"播放音乐", Toast.LENGTH_SHORT).show();

//意图实现跳转功能
  Intent intent = new Intent(this, MusicService.class);

//附加附件,参数一:key值,参数二:values值
  intent.putExtra(MusicService.CMD, MusicService.MUSICPLAY);

//开始服务
  startService(intent);

 }

 // 暂停音乐
 public void pausePlay(View v) {
  Log.v(tag, "pausePlay");
  Intent intent = new Intent(this, MusicService.class);
  intent.putExtra(MusicService.CMD, MusicService.MUSICPPAUSE);
  startService(intent);
 }

 // 停止音乐
 public void stopPlay(View v) {
  Log.v(tag, "stopPlay");
  Intent intent = new Intent(this, MusicService.class);
  intent.putExtra(MusicService.CMD, MusicService.MUSICSTOP);
  startService(intent);
 }

 // 关闭服务
 public void closeService(View v) {
  Log.v(tag, "closeService");

//关闭服务stopService
  Intent intent = new Intent(this, MusicService.class);
  stopService(intent);
 }

//定义抽象方法

 public abstract void initView();

 public abstract void inteData();

}

2.GameActivity.java

//继承父类方法

public class GameActivity extends BaseActivity {

 //初始化组件
 public void initView() {
  //改变TextView文本
    ((TextView)findViewById(R.id.textView1)).setText("游戏界面");
  
 }
     //初始化数据
 public void inteData() {

 }

 
 //菜单栏
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  menu.add("设置界面");
  return super.onCreateOptionsMenu(menu);
 }
 
//菜单栏实现跳转
 public boolean onOptionsItemSelected(MenuItem item) {

//跳转到SetActivity
  Intent intent=new Intent(this,SetActivity.class);
  startActivity(intent);
  return super.onOptionsItemSelected(item);
 }
 
}

3.SetActivity.java

//继承父类BaseActivity父类方法

public class SetActivity extends BaseActivity {

 @Override
 public void initView() {

//改变TextView文本值
   ((TextView)findViewById(R.id.textView1)).setText("设置界面");
 }

 @Override
 public void inteData() {

 }

}

4.MusicService.java

//新建MusicService继承Service子类,实现方法

public class MusicService extends Service {

//定义变量

 public static final String TAG = "MusicService";
 public static final String CMD = "cmd";
 public static final int MUSICPLAY = 1;
 public static final int MUSICPPAUSE = 2;
 public static final int MUSICSTOP = 3;

//音频播放器定义
 private MediaPlayer play;

 public IBinder onBind(Intent intent) {
  return null;
 }

 public void onCreate() {

//加载MP3格式的音频,放在在res/raw
  play = MediaPlayer.create(this, R.raw.zhizhuo);
  Log.v(TAG, "onCreate");
  super.onCreate();
 }

//开始命令,在这方法进行判断

 public int onStartCommand(Intent intent, int flags, int startId) {
  Log.v(TAG, "onStartCommand");

//获取传过来的key值,intent.getIntentExtra.

  int cmd2 = intent.getIntExtra(CMD, 0);

//switch判断
  switch (cmd2) {

//播放
  case MUSICPLAY:
   if (!play.isPlaying()) {

    play.start();
   }

   break;

//暂停
  case MUSICPPAUSE:
   if (play.isPlaying()) {
    play.pause();
   }

   break;

//停止
  case MUSICSTOP:
   if (play.isPlaying()) {
    play.stop();
   }

   break;

  default:
   break;
  }

  return super.onStartCommand(intent, flags, startId);
 }

//销毁

 @Override
 public void onDestroy() {
  Log.v(TAG, "onDestroy");
  super.onDestroy();
 }

}

今晚就到这了,小编这两天累坏了,需要好好休息,明天好好上课,学到新的知识分享给大家。晚安。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值