美文网首页
安卓短信到来时播放音乐

安卓短信到来时播放音乐

作者: sml1 | 来源:发表于2020-04-17 14:03 被阅读0次

1.首先在AndroidManifest.xml里面添加过滤器

<uses-permission android:name="android.permission.RECEIVE_SMS"/>

2.添加一个按钮,写音乐服务文件,在res里面添加一个raw文件夹,放要播放的音乐

package com.example.example2;

import android.app.Service;

import android.content.Intent;

import android.media.MediaPlayer;

import android.os.IBinder;

public class MyAudioService extends Service {

    MediaPlayer mediaPlayer;

    public MyAudioService() {

    }

    @Override

    public IBinder onBind(Intent intent) {

        // TODO: Return the communication channel to the service.

        //throw new UnsupportedOperationException("Not yet implemented");

        return null;

    }

    public void onCreate() {

        mediaPlayer  = MediaPlayer.create(this,R.raw.start);

        mediaPlayer.start();

    }

    @Override

    public void onDestroy() {

        mediaPlayer.stop();

    }

}

3.接受

package com.example.example2;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

public class SmsReceiver extends BroadcastReceiver {

    @Override

    public void onReceive(Context context, Intent intent) {

        // TODO: This method is called when the BroadcastReceiver is receiving

        // an Intent broadcast.

        //throw new UnsupportedOperationException("Not yet implemented");

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

    }

}

4.主程序

package com.example.example2;

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

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

                }

        }

    }

}


相关文章

网友评论

      本文标题:安卓短信到来时播放音乐

      本文链接:https://www.haomeiwen.com/subject/qinevhtx.html