您的位置:首页技术文章
文章详情页

Android Studio实现音乐播放器

【字号: 日期:2022-09-21 15:01:44浏览:5作者:猪猪

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(); }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持好吧啦网。

标签: Android
相关文章: