日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

android 锁屏音量,Android锁屏状态获取音量按键事件

發布時間:2024/4/17 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 锁屏音量,Android锁屏状态获取音量按键事件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android系統沒有提供音量按鍵的廣播,而Activity的onKeyDown方法只有在界面顯示時才能捕獲音量變化,

要在鎖屏狀態或后臺獲得音量按鍵事件,可以通過判斷音量值的改變來判斷是否按下了音量鍵。實現的具體思路是:

開一個子線程,持續判斷當前音量值和之前音量值是否一致,如果不同說明按下了音量鍵,并且重置音量值,使音量不在最大值或最小值上。

package com.hy2014.phonesafer.activity;

import android.app.Activity;

import android.content.Context;

import android.media.AudioManager;

import android.os.Bundle;

/**

*

* @author Dawin Create 2015-01-19

*/

public class VolumeChangeActivity extends Activity

{

/**

* 當前音量

*/

private int currentVolume;

/**

* 控制音量的對象

*/

public AudioManager mAudioManager;

/**

* 系統最大音量

*/

private int maxVolume;

/**

* 確保關閉程序后,停止線程

*/

private boolean isDestroy;

@Override

protected void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

isDestroy = false;

// 獲得AudioManager對象

mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);//音樂音量,如果要監聽鈴聲音量變化,則改為AudioManager.STREAM_RING

maxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);

}

@Override

protected void onDestroy()

{

super.onDestroy();

isDestroy = true;

}

/**

* 監聽音量按鍵的線程

*/

private Thread volumeChangeThread;

/**

* 持續監聽音量變化 說明: 當前音量改變時,將音量值重置為最大值減2

*/

public void onVolumeChangeListener()

{

currentVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

volumeChangeThread = new Thread()

{

public void run()

{

while (!isDestroy)

{

int count = 0;

boolean isDerease = false;

// 監聽的時間間隔

try

{

Thread.sleep(20);

} catch (InterruptedException e)

{

System.out.println("error in onVolumeChangeListener Thread.sleep(20) " + e.getMessage());

}

if (currentVolume < mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC))

{

count++;

currentVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

// 設置音量等于 maxVolume-2的原因是:當音量值是最大值和最小值時,按音量加或減沒有改變,所以每次都設置為固定的值。

mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, maxVolume - 2,

AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);

}

if (currentVolume > mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC))

{

count++;

currentVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, maxVolume - 2,

AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);

if (count == 1)

{

isDerease = true;

}

}

if (count == 2)

{

System.out.println("按下了音量+");

} else if (isDerease)

{

System.out.println("按下了音量-");

}

}

};

};

volumeChangeThread.start();

}

}

總結

以上是生活随笔為你收集整理的android 锁屏音量,Android锁屏状态获取音量按键事件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。