关于andorid播放内部铃声和震动的简单介绍

手机震动提示

关于Android设备震动的情况有一个内部类 Vibrator
private Vibrator vibrator; //定义一个内部类


将需要播放的文件放置在相关的文件夹下面,例如下面这个我将danger.mp3存放在assets这个文件夹下面
这里写图片描述
接下来就是进行代码控制了

 bt_getBatter.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                vibrator = (Vibrator)getApplicationContext().getSystemService(VIBRATOR_SERVICE);
                // 等待3秒,震动3秒,从第0个索引开始,一直循环
                vibrator.vibrate(new long[]{500, 500}, 0);
                isvibrator = !isvibrator;
                if (isvibrator){ //判断为 boolean值,用户开关播放的
                    vibrator.cancel();
                    player.stop();//这个是铃声停止的,先不用看
                }else {
                    playRing();//这个是铃声播放的,暂时不用看
                }

            }
        });

解释下上面的代码
vibrator = (Vibrator)getApplicationContext().getSystemService(VIBRATOR_SERVICE);是指拿到这个可以震动的服务
vibrator.vibrate(new long[]{500, 500}, 0);指的是等待300毫秒,震动300毫秒,一直循环下去,执行到这里,如果设备有这个模块就会间隔性的震动
vibrator.cancel();是停止震动的借口,第二次点击根据判断标志就可以停止震动


手机响铃提示

和设备震动一样,这个也是有系统内部提供的类MediaPlayer

    private MediaPlayer playRing() {

        try {
            player = new MediaPlayer();
            assetManager = getAssets();
            AssetFileDescriptor fileDescriptor = assetManager.openFd("danger.mp3");
            player.setDataSource(fileDescriptor.getFileDescriptor(),fileDescriptor.getStartOffset(),
                    fileDescriptor.getStartOffset());
            player.prepare();
            player.start();

        } catch (IOException e) {
            e.printStackTrace();
        }
        return player;
    }

调用这个方法就是加载资源文件下面的文件资源
player.stop();这个就会停止当前的播放


播放系统自带的,例如电话铃声

    public  void PlaySound(final Context context) {

        Log.e("ee", "正在响铃");
        // 使用来电铃声的铃声路径
        Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
        // 如果为空,才构造,不为空,说明之前有构造过
        if(mMediaPlayer == null)
            mMediaPlayer = new MediaPlayer();
        try {
            mMediaPlayer.setDataSource(context, uri);
            mMediaPlayer.setLooping(true); //循环播放
            mMediaPlayer.prepare();
            mMediaPlayer.start();
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
posted @   飞航之梦  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示