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

    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值