Android Studio实现音乐播放器

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

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

结果截图:

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

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

广播

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

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

(0)

相关推荐

  • android实现音乐播放器进度条效果

    本文实例为大家分享了android实现音乐播放器进度条效果的具体代码,供大家参考,具体内容如下 效果图 依赖3个对象 MediaPlayer:实现音乐播放,暂停,缓冲. SeekBar:滑动的进度条. java.util.Timer:定时器,时时更新进度条. main.xml样式文件 <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android

  • android暂停或停止其他音乐播放器的播放实现代码

    代码如下: 复制代码 代码如下: public static final String PLAYSTATE_CHANGED = "com.android.music.playstatechanged";    public static final String META_CHANGED = "com.android.music.metachanged";    public static final String QUEUE_CHANGED = "com

  • android webvie指定视频播放器播放网站视频

    过滤掉其他的播放器,使用我自己的播放器来做 复制代码 代码如下: wv.setWebViewClient(new WebViewClient() {            public boolean shouldOverrideUrlLoading(final WebView view,                    final String url) { if (url.contains("3gp") || url.contains("mp4")) {/

  • Android自定义播放器控件VideoView

    介绍 最近要使用播放器做一个简单的视频播放功能,开始学习VideoView,在横竖屏切换的时候碰到了点麻烦,不过在查阅资料后总算是解决了.在写VideoView播放视频时候定义控制的代码全写在Actvity里了,写完一看我靠代码好乱,于是就写了个自定义的播放器控件,支持指定大小,可以横竖屏切换,手动左右滑动快进快退.好了,下面开始. 效果图有点卡,我也不知道为啥..... VideoView介绍 这个是我们实现视频播放最主要的控件,详细的介绍大家百度就去看,这里介绍几个常用的方法. 用于播放视频

  • Android实现简单音乐播放器(MediaPlayer)

    Android实现简单音乐播放器(MediaPlayer),供大家参考,具体内容如下 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 实现一个简单的音乐播放器,要求功能有: 播放.暂停功能: 进度条显示播放进度功能 拖动进度条改变进度功能: 后台播放功能: 停止功能: 退出功能: 代码实现 导入歌曲到手机SD卡的Music目录中,这里我导入了4首歌曲:仙剑六里面的<誓言成晖>.<剑客不能说>.<镜中人>和<

  • Android简易音乐播放器实现代码

    本文实例为大家分享了Android音乐播放器的具体代码,供大家参考,具体内容如下 1.播放项目内的音乐 package com.thm.g150820_android26_playmusic; import Android.media.MediaPlayer; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.wid

  • 教你轻松制作Android音乐播放器

    欣赏一下我们清爽的界面吧~ 如果是只用activity来制作这样的东西简直是太小儿科了,此处我们当然用的是service 首先我们先上service的代码: 1.如果我们要访问service的属性和方法,那么在activity肯定是以bindservice的方法实现的,而在service中的onbind方法也是必须要实现的,onbind返回的Ibinder对象在activity的serviceconnection中得到使用. 2.activity获取到Ibinder对象,可以进一步获取服务对象和

  • Android MediaPlayer实现音乐播放器实例代码

    Android MediaPlayer实现音乐播放器 1.布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height=&qu

  • Android音乐播放器制作 扫描本地音乐显示在手机(一)

    思路 首先是扫描本地所有的音频文件,然后全部装进集合当中,接下来就是用ListView展示在屏幕上,大概就是这几个步骤了,接下来细讲 创建一个容器 进行过数据解析的朋友都应该知道JavaBean吧,用来装载解析出来的数据,我们这里同样也要创建一个JavaBean,用来装载扫描到的音频文件,具体的代码是: package com.duanlian.mymusicplayerdemo.bean; /** * Created by user on 2016/6/24. * 放置音乐 */ public

  • Android编程开发音乐播放器实例

    本文实例讲述了Android编程开发音乐播放器,分享给大家供大家参考,具体如下: 音乐播放器中综合了以下内容: SeekBar.ListView.广播接收者(以代码的形式注册Receiver).系统服务.MediaPlayer 实现的功能: 1.暂停/播放.下一首/上一首,点击某一首时播放 2.支持拖动进度条快进 3.列表排序 4.来电话时,停止播放,挂断后继续播放 5.可在后台播放 效果图: 界面: main.xml: <?xml version="1.0" encoding=

随机推荐