博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android使用Service组件实现简单的音乐播放器
阅读量:3968 次
发布时间:2019-05-24

本文共 4619 字,大约阅读时间需要 15 分钟。

一、实验内容

  1. 构建应用界面布局
    (1)新建一个安卓工程,在默认的layout界面中添加一个按钮(button),如下图所示:
    在这里插入图片描述
    2)构建相应的java代码,添加按钮的响应事件,跳转至另一个界面musicplayer.xml,对应的activity名称为musicPlayer.java,在其界面中添加三个imagebutton,分别对应播放器的播放、退出(后台播放)、退出(停止播放)操作,如下图所示:
    在这里插入图片描述
  2. 构建Service组件
    (1)新建一个MusicService类继承Service,通过重写onStartCommand()、onDestroy()方法实现对MediaPlayer播放器的控制。
  3. 实现简单的音乐播放器
    (1)完善musicPlayer.java中的代码,通过startService方法启动MusicService。并实现各个按钮的功能。其中:
    播放按钮:点击按钮开始播放音乐(播放固定音乐文件for-love.mp3,请事先将文件导入到项目的asset或者raw目录内),再次点击按钮暂停播放。
    退出(后台播放):点击按钮退出musicplayer界面(回到初始界面),但此时后台仍在播放音乐。
    退出(停止播放):点击按钮退出musicplayer界面(回到初始界面),同时停止播放音乐。
package com.example.myapplication7;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;public class MainActivity extends AppCompatActivity {
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button bt = findViewById(R.id.start); bt.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
Intent intent =new Intent(MainActivity.this,musicplayer.class); startActivity(intent); } }); }}
package com.example.myapplication7;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.ImageButton;import android.widget.Toast;public class musicplayer extends AppCompatActivity {
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.musicplayer); final Intent intent =new Intent(musicplayer.this,MusicService.class); ImageButton btn_play=(ImageButton) findViewById(R.id.btn_play); btn_play.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
if( MusicService.isplay==false) {
startService(intent); Toast.makeText(getApplicationContext(), "正在播放", Toast.LENGTH_LONG).show(); } else {
stopService(intent); Toast.makeText(getApplicationContext(), "暂停播放", Toast.LENGTH_LONG).show();} }}); ImageButton btn_return=(ImageButton) findViewById(R.id.btn_return); btn_return.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
if( MusicService.isplay==true) {
Intent intent2 = new Intent( musicplayer.this,MainActivity.class); startActivity(intent2); Toast.makeText(getApplicationContext(), "正在播放", Toast.LENGTH_LONG).show(); } }}); ImageButton btn_stop=(ImageButton) findViewById(R.id.btn_stop); btn_stop.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
if( MusicService.isplay==true) {
stopService(intent); Intent intent1 = new Intent( musicplayer.this,MainActivity.class); startActivity(intent1); Toast.makeText(getApplicationContext(), "停止播放", Toast.LENGTH_LONG).show(); } }}); }}
package com.example.myapplication7;import android.app.Service;import android.content.Intent;import android.media.MediaPlayer;import android.os.IBinder;public class MusicService extends Service {
static boolean isplay; MediaPlayer player; public MusicService() {
} @Override public void onCreate() {
player = MediaPlayer.create(this,R.raw.for_love); super.onCreate(); } @Override public int onStartCommand(Intent intent, int flags, int startId) {
if(!player.isPlaying()) {
player.start(); isplay=player.isPlaying(); } return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() {
player.stop(); isplay=player.isPlaying(); player.release(); super.onDestroy(); } @Override public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service. throw new UnsupportedOperationException("Not yet implemented"); }}

MusicService:通过重写OnCreate(),onDestroy(),onStartCommand()实现后台service的music播放

转载地址:http://yucki.baihongyu.com/

你可能感兴趣的文章
Linux设备驱动调试技术 2
查看>>
Linux设备驱动调试技术 2
查看>>
Linux设备驱动调试技术 3
查看>>
Linux设备驱动调试技术 3
查看>>
java 访问 usb (一)
查看>>
java 访问 usb (一)
查看>>
linux-2.6.14下USB驱动移植心得
查看>>
linux-2.6.14下USB驱动移植心得
查看>>
[S3C6410]USB-HOST驱动完成
查看>>
[S3C6410]USB-HOST驱动完成
查看>>
Linux模块编程系列之二 熟悉特定的…
查看>>
Linux模块编程系列之二 熟悉特定的…
查看>>
Linux2.6内核驱动移植参考
查看>>
Linux2.6内核驱动移植参考
查看>>
设备标识及驱动程序所支持的设备(…
查看>>
设备标识及驱动程序所支持的设备(…
查看>>
EXPORT_SYMBOL()
查看>>
EXPORT_SYMBOL()
查看>>
在fedora9中编译linux设备驱动程序…
查看>>
在fedora9中编译linux设备驱动程序…
查看>>