第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

簡(jiǎn)單的用綁定服務(wù)做一個(gè)可后臺(tái)播放的音樂播放器

標(biāo)簽:
Android

主界面非常简单,就是3个按钮去实现。监听了返回键,弹出对话框,如果需要隐藏播放器,就将期移动到后台去。

在服务中就是把其设置为前台进程。

这里需要注意的是,在对当前Activity做处理的时候,需要将其启动模式做更改,不能使用默认的启动方式,使用

默认的启动方式的话,会造成我这里的通知跳转进播放器的时候,有两个一模一样的界面

.....................................................................................

   android:launchMode="singleTask"

.....................................................................................


package cn.itcast.musicdemo1;
import cn.itcast.musicdemo1.dao.MusicI;
import cn.itcast.musicdemo1.service.BackgroundMusicService;
import android.os.Bundle;
import android.os.IBinder;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ComponentName;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.ServiceConnection;
public class MainActivity extends Activity implements OnClickListener {
private Button start;
private Button pause_resume;
private Button stop;
/** 服务中的接口 */
private MusicI mMusicI;
private MyServiceConnection conn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start = (Button) findViewById(R.id.start);
pause_resume = (Button) findViewById(R.id.pause_resume);
stop = (Button) findViewById(R.id.stop);
start.setOnClickListener(this);
pause_resume.setOnClickListener(this);
stop.setOnClickListener(this);
/** 绑定服务 */
Intent service = new Intent(MainActivity.this,
BackgroundMusicService.class);
conn = new MyServiceConnection();
bindService(service, conn, BIND_AUTO_CREATE);
}
class MyServiceConnection implements ServiceConnection {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
mMusicI = (MusicI) service;
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.start:
mMusicI.start();
break;
case R.id.pause_resume:
mMusicI.pause();
break;
case R.id.stop:
mMusicI.stop();
break;
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
// 监听返回键的操作
case KeyEvent.KEYCODE_BACK:
new AlertDialog.Builder(MainActivity.this)
.setTitle("设置")
.setMessage("确定需要退出吗?")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
})
.setNeutralButton("隐藏", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
/** 隐藏到后台任务站*/
moveTaskToBack(true);
}
})
.setNegativeButton("取消", null)
.show();
break;
default:
break;
}
return super.onKeyDown(keyCode, event);
}
@Override
protected void onDestroy() {
super.onDestroy();
/** 断开绑定服务和服务的连接*/
if (conn != null) {
unbindService(conn);
conn = null;
}
}
}

服务端的代码如下:

package cn.itcast.musicdemo1.service;
import cn.itcast.musicdemo1.MainActivity;
import cn.itcast.musicdemo1.dao.MusicI;
import android.app.Notification;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Binder;
import android.os.Environment;
import android.os.IBinder;
public class BackgroundMusicService extends Service {
MyBinder mMyBinder = new MyBinder();
MediaPlayer player;
@Override
public IBinder onBind(Intent intent) {
return mMyBinder;
}
@Override
public void onCreate() {
super.onCreate();
/**
 * id 通知的唯一识别 notification 通知
 */
Notification notification = new Notification(
android.R.drawable.ic_media_play, "素素播放器", //翻滚信息
System.currentTimeMillis());
Intent intent = new Intent(this, MainActivity.class);
/** PendingIntent延时意图*/
PendingIntent contentIntent = PendingIntent.getActivity(this, 
100, 
intent, 
0);
notification.setLatestEventInfo(this, 
"哈哈", 
"播放器运行在后台",
contentIntent);
/** 将当前进程提升为前台进程 */
startForeground(100, notification);
player = new MediaPlayer();
player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
}
});
}
@Override
public void onDestroy() {
super.onDestroy();
// 释放硬件资源
player.release();
}
private class MyBinder extends Binder implements MusicI {
@Override
public void start() {
try {
player.reset();
player.setDataSource(Environment.getExternalStorageDirectory()
+ "/mote.mp3");
player.prepare();
player.start();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void pause() {
player.pause();
}
@Override
public void stop() {
player.stop();
}
}
}

原文链接:http://www.apkbus.com/blog-356782-59117.html

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消