編輯:關於Android編程
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 基礎(四)
Service常見面試題Service 是否在 main thread 中執行, service 裡面是否 能執行耗時的操作?默認情況,如果沒有顯示的指 servic 所
Android仿騰訊應用寶 應用市場,下載界面, 帶進度按鈕
最近做應用市場,需要用到,下載帶進度的顯示的按鈕,因此找了下其他大神做的,直接拿來改進,並且刪減掉大量沒用到的。分享下改進後的。 重新修改,當下載進度有進度的時候,自動顯
基於Redux的ReactNative項目開發總結(一)
寫在前面 上周把基於Redux的單頁應用開發完 緊接著就開始了ReactNative的開發。真的快得不可思議,只花了一周時間,我們兩個人就分工把APP也開發完了,並且同時
Android 輕松實現網絡交互模板
看完本文,您可以學到:1.Android與後台交互的模板化方法 2.JSON的使用3.檢查網絡連接4.AsyncTask的使用我們簡單的以登錄為例,來實現整個的