软件编程
位置:首页>> 软件编程>> Android编程>> Android Studio实现音乐播放器

Android Studio实现音乐播放器

作者:zhoulingziCSDN  发布时间:2021-07-01 14:02:43 

标签:Android,studio,音乐播放器

Androidstudio音乐播放器,供大家参考,具体内容如下

实现目的:利用广播在myapplication中原本button点我暂停按钮是灰色无法点击的,此时发送一条短信给自己的安卓手机,按钮变成黑色,音乐开始播放,此时点击 点我暂停 按钮,音乐停止。

结果截图:

发送短信给自己后:,点我暂停 按钮变成黑色,并开始播放音乐:

Android Studio实现音乐播放器

Android Studio实现音乐播放器

Android Studio实现音乐播放器

此时点击点我暂停按钮,音乐暂停

广播

Android 应用与 Android 系统和其他 Android 应用之间可以相互收发广播消息,这与发布-订阅设计模式相似。这些广播会在所关注的事件发生时发送。举例来说,Android 系统会在发生各种系统事件时发送广播,例如系统启动或设备开始充电时。再比如,应用可以发送自定义广播来通知其他应用它们可能感兴趣的事件(例如,一些新数据已下载)。
广播消息本身会被封装在一个Intent对象中,该对象的操作字符串会标识所发生的事件(例如 android.intent.action.AIRPLANE_MODE )。该 Intent 可能还包含绑定到其 extra 字段中的附加信息。例如,飞行模式 intent 包含布尔值 extra 来指示是否已开启飞行模式。

xml文件


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/loading">

<Button
 android:text="BUTTON"
 android:layout_marginTop="@android:dimen/app_icon_size"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_gravity="center"
 android:onClick="send"/>

</LinearLayout>

mainactivity.java文件


package com.example.myapplication;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

private Button btnStop;
private boolean isCast; //是否为广播激活

@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECEIVE_SMS) != PackageManager.PERMISSION_GRANTED){
  ActivityCompat.requestPermissions(this,new String[]{"android.permission.RECEIVE_SMS"},1);
 }
 btnStop=findViewById(R.id.btnStop);
 Intent intent = getIntent(); //获取广播意图对象
 isCast = intent.getBooleanExtra("iscast", false); //默认值为false
 btnStop.setEnabled(isCast); //设置停止按钮可用和单击监听
 if(isCast) Toast.makeText(this, "正在播放音乐...", Toast.LENGTH_SHORT).show();
 btnStop.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v){
   //显式服务调用意图(非绑定式)
   Intent intent=new Intent(MainActivity.this, MyAudioService.class);
   //在Activity组件里,停止音乐播放服务
   stopService(intent);
   isCast=false;
   btnStop.setEnabled(isCast);
//    finish(); //销毁本活动
  }
 });
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
 super.onRequestPermissionsResult(requestCode, permissions, grantResults);
 switch (requestCode){
  case 1:
   if(grantResults[0]!=PackageManager.PERMISSION_GRANTED){
    Toast.makeText(this, "未授权,无法实现预定的功能!", Toast.LENGTH_SHORT).show();
    finish();
   }else{
    Toast.makeText(this, "请发一条短信验证...", Toast.LENGTH_SHORT).show();
   }
 }
}
}

SmsReceiver.java文件

编写广播接收者程序


package com.example.myapplication;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

/*
本广播接收者程序分别调用了应用的主Activity程序和播放音乐的服务程序
*/
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {

Intent serviceIntent = new Intent(context, MyAudioService.class);
 //在广播组件里,通过上下文对象启动音乐播放服务组件
 context.startService(serviceIntent);

//新建调用Activity组件的意图
 Intent activityIntent = new Intent(context, MainActivity.class);
 activityIntent.putExtra("iscast", true); //携带数据
 //新建栈用来存放被启动的Activity(当已经存在时,只做移动处理)
 activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 //在广播组件里,通过上下文对象启动Activity组件
 context.startActivity(activityIntent);
}
}

MyAudioService.java文件


package com.example.myapplication;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;

public class MyAudioService extends Service {
MediaPlayer mediaPlayer;

@Override
public IBinder onBind(Intent intent) {
 return null;
}
@Override
public void onCreate() {
 mediaPlayer = MediaPlayer.create(this, R.raw.liyue);//创建音乐服务。播放R.raw中的音乐liyue
 mediaPlayer.start();//开始服务
}
@Override
public void onDestroy() {
 mediaPlayer.stop();
}
}

来源:https://blog.csdn.net/zhoulingziCSDN/article/details/109940975

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com