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