android手机关机锁屏音

android机器默认关机有锁屏音,播放这个声音的函数在KeyguardViewMediator.java  playSounds函数,只需要定义一个变量,接收到系统关机广播时,调用这个函数的时候直接返回就OK了。

 

private boolean mCanPlaySound = true; // add for bestone

private void playSounds(boolean locked) {
        // User feedback for keyguard.

        if (mSuppressNextLockSound) {
            mSuppressNextLockSound = false;
            return;
        }
       
        // start add for bestone
        if(!mCanPlaySound)
        {
          return;
        }
        // end add for bestone

        final ContentResolver cr = mContext.getContentResolver();
        if (Settings.System.getInt(cr, Settings.System.LOCKSCREEN_SOUNDS_ENABLED, 1) == 1)
        {
            final String whichSound = locked
                ? Settings.System.LOCK_SOUND
                : Settings.System.UNLOCK_SOUND;
            final String soundPath = Settings.System.getString(cr, whichSound);
            if (soundPath != null) {
                final Uri soundUri = Uri.parse("file://" + soundPath);
                if (soundUri != null) {
                    final Ringtone sfx = RingtoneManager.getRingtone(mContext, soundUri);
                    if (sfx != null) {
                        sfx.setStreamType(AudioManager.STREAM_SYSTEM);
                        sfx.play();
                    } else {
                        Xlog.d(TAG, "playSounds: failed to load ringtone from uri: " + soundUri);
                    }
                } else {
                    Xlog.d(TAG, "playSounds: could not parse Uri: " + soundPath);
                }
            } else {
                Xlog.d(TAG, "playSounds: whichSound = " + whichSound + "; soundPath was null");
            }
        }
    }     

 

 

private BroadcastReceiver mBroadCastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            final String action = intent.getAction();
            if (action.equals(DELAYED_KEYGUARD_ACTION)) {

                int sequence = intent.getIntExtra("seq", 0);

                if (false) Xlog.d(TAG, "received DELAYED_KEYGUARD_ACTION with seq = "
                        + sequence + ", mDelayedShowingSequence = " + mDelayedShowingSequence);

                if (mDelayedShowingSequence == sequence) {
                    // Don't play lockscreen SFX if the screen went off due to
                    // timeout.
                    mSuppressNextLockSound = true;

                    doKeyguard();
                }
            } else if (TelephonyManager.ACTION_PHONE_STATE_CHANGED.equals(action)) {
                mPhoneState = intent.getStringExtra(TelephonyManager.EXTRA_STATE);

                if (TelephonyManager.EXTRA_STATE_IDLE.equals(mPhoneState)  // call ending
                        && !mScreenOn                           // screen off
                        && mExternallyEnabled) {                // not disabled by any app

                    // note: this is a way to gracefully reenable the keyguard when the call
                    // ends and the screen is off without always reenabling the keyguard
                    // each time the screen turns off while in call (and having an occasional ugly
                    // flicker while turning back on the screen and disabling the keyguard again).
                    if (DEBUG) Xlog.d(TAG, "screen is off and call ended, let's make sure the "
                            + "keyguard is showing");
                    doKeyguard();
                }
            }
            // start add for bestone
            else if(action.equals(Intent.ACTION_SHUTDOWN))
            {
              mCanPlaySound = false;
            }
            // end add for bestone
            /*else if(action.equals(Intent.ACTION_SHUTDOWN)){
             Xlog.d("wgao","ACTION_SHUTDOWN ~~~"); 
             showDown_gotoSleep = true;
            }else if(action.equals(IPO_ENABLE)){
             Xlog.d("wgao","ACTION_SHUTDOWN_IPO ~~~");
             showDown_gotoSleep = true;
            }else if(action.equals(IPO_DISABLE)){
             Xlog.d("wgao","ACTION_BOOT_IPO ~~~");
             showDown_gotoSleep = false;
            }*/
        }
    };

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Android系统中,我们通常可以使用多种方法来实现乐播放锁屏显示功能。 首先,我们可以创建一个自定义锁屏界面来显示当前播放的乐信息。这可以通过创建一个自定义的锁屏活动(Lock Screen Activity)来实现。在这个活动中,我们可以设置一个布局文件,用来显示乐的封面、歌曲名称、艺术家等信息。通过获取当前播放器的状态信息,我们可以更新锁屏界面上的内容,使其与当前播放的乐保持同步。 其次,我们还可以使用Notification来实现乐播放锁屏显示。通过在乐播放服务中创建一个Notification,并设置合适的样式和布局,我们可以将乐信息显示在锁屏通知栏中。用户可以通过下拉通知栏来查看当前播放歌曲的信息,并且可以通过点击通知跳转到乐播放界面。 另外,我们还可以利用第三方库来实现乐播放锁屏显示。有一些强大的乐播放框架,如ExoPlayer和MediaPlayer,它们提供了一些便捷的方法来实现锁屏显示功能。这些框架可以很方便地获取乐的元数据,并使用系统提供的锁屏API来将信息显示在锁屏界面上。 总的来说,实现Android乐播放锁屏显示功能可以通过创建自定义锁屏界面、使用Notification或者利用第三方库来实现。这些方法都可以帮助我们在锁屏状态下显示当前播放的乐信息,提升用户体验。 ### 回答2: 在Android系统中,乐播放锁屏显示是指当我们在使用乐播放器时,将屏幕锁定后,仍然可以在锁屏界面上进行乐播放操作和显示相关的信息。 Android系统提供了相应的接口和功能,使得乐播放器可以在锁屏界面上显示歌曲的信息,例如歌曲名称、歌手、专辑封面等。这样用户在锁屏状态下也能够方便地浏览和控制正在播放的乐。 要实现乐播放锁屏显示,首先需要在应用程序中注册MediaSession对象。MediaSession是Android系统提供的一个用于媒体播放控制的类,它包含了与媒体播放状态相关的方法和属性。 在注册MediaSession之后,需要通过设置相应的参数,使得乐播放器能够在锁屏界面上显示歌曲信息。可以通过设置MediaMetadata属性来指定乐的标题、歌手、专辑封面等信息。此外,还可以通过设置MediaSessionCompat.TransportControls的方法来实现在锁屏界面上进行乐播放操作,例如播放、暂停、上一首、下一首等。 当乐播放器处于播放状态时,锁屏界面上将显示当前正在播放的歌曲信息。用户可以通过滑动或点击相应的控制按钮来控制乐的播放和暂停。在锁屏界面上,用户还可以通过上一首和下一首按钮来切换播放列表中的歌曲。 总而言之,Android系统提供了相应的接口和功能,使得乐播放器可以在锁屏界面上显示歌曲信息并进行控制。这样,即使在锁屏状态下,用户也能够方便地浏览和操作正在播放的乐。 ### 回答3: Android乐播放锁屏显示是指在锁屏界面上显示当前正在播放的乐信息,例如歌曲名称、歌手、专辑封面等。这样用户可以在不解锁屏幕的情况下,直接查看当前播放的乐信息。 要实现Android乐播放锁屏显示,可以通过以下步骤: 1. 获取乐播放器的控制权:在Android上,我们可以使用MediaSession来控制乐的播放和展示相关信息。通过创建一个MediaSession实例,并且调用setActive(true)来激活该会话。 2. 更新乐信息:在播放乐的过程中,我们可以使用MediaMetadata.Builder来构建乐信息,如歌曲名称、歌手、专辑封面等。然后,通过调用setMetadata更新乐信息。 3. 显示锁屏界面:当乐播放器激活且乐信息已经更新后,我们可以使用MediaStyle样式设置锁屏界面。通过创建一个Notification.Builder实例,并将乐信息和相应的操作添加到通知栏中。 4. 更新通知栏:为了确保乐信息的实时性,我们需要在乐信息更新时更新通知栏。可以通过注册MediaSession.Callback监听乐信息的变化,并在onMetadataChanged()回调中更新通知栏。 通过上述步骤,我们可以实现Android乐播放锁屏显示功能,让用户能够方便地获取正在播放的乐信息,提高用户体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值