2012-07-07 59 views
-1

是否可以使用首選項活動來編寫系統卷功能的工作?首選項活動頭腦風暴

就像說我想輸出一個消息給用戶如果音量開得很大,將彈出一個舉杯說:「嘿,音量太響」

我知道如何使祝酒詞現在我我正在考慮pref活動。 只是想法在這裏踢。

import android.content.Context; 
import android.media.AudioManager; 
import android.os.Bundle; 
import android.preference.DialogPreference; 
import android.preference.Preference; 
import android.preference.Preference.OnPreferenceChangeListener; 
import android.preference.PreferenceActivity; 
import android.widget.SeekBar; 
import android.widget.SeekBar.OnSeekBarChangeListener; 
import android.widget.Toast; 

public class volman extends PreferenceActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.dhd); 

    DialogPreference dp = (DialogPreference) findPreference("mediavolume"); 
    dp.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { 

     public boolean onPreferenceChange(Preference preference, 
       Object newValue) { 
      SeekBar volumeBar = (SeekBar) findViewById(R.id.seekBar); 
      final AudioManager manager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 

      volumeBar.setMax(manager 
        .getStreamMaxVolume(AudioManager.STREAM_SYSTEM)); 
      volumeBar.setProgress(manager 
        .getStreamVolume(AudioManager.STREAM_SYSTEM)); 

      volumeBar 
        .setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 
         @Override 
         public void onStartTrackingTouch(SeekBar seekBar) { 
          Toast.makeText(volman.this, "Lift off.... StartSpark", Toast.LENGTH_LONG).show(); 

         } 

         @Override 
         public void onStopTrackingTouch(SeekBar seekBar) { 
          Toast.makeText(volman.this, "Now Stopping", Toast.LENGTH_LONG).show(); 

         } 
         public void onProgressChanged(SeekBar seekBar, 
           int progress, boolean fromUser) { 
          manager.setStreamVolume(
            AudioManager.STREAM_SYSTEM, progress, 
            AudioManager.FLAG_SHOW_UI); 
          Toast.makeText(volman.this, "Now going quiet", Toast.LENGTH_LONG).show(); 
         } 
        }); 

      return false; 
     } 
    }); 
} 

private DialogPreference findPreference(String string) { 
    return null; 
} 
} 

而現在的logcat:

[2012-07-07 15:25:00 - volman4.0] Android Launch! 
[2012-07-07 15:25:00 - volman4.0] adb is running normally. 
[2012-07-07 15:25:00 - volman4.0] No Launcher activity found! 
[2012-07-07 15:25:00 - volman4.0] The launch will only sync the application package on the device! 
[2012-07-07 15:25:00 - volman4.0] Performing sync 
[2012-07-07 15:25:00 - volman4.0] Automatic Target Mode: using existing emulator 'emulator-5554' running compatible AVD 'ICS' 
[2012-07-07 15:25:00 - volman4.0] Uploading volman4.0.apk onto device 'emulator-5554' 
[2012-07-07 15:25:00 - volman4.0] Installing volman4.0.apk... 
[2012-07-07 15:25:10 - volman4.0] Success! 
[2012-07-07 15:25:11 - volman4.0] /volman4.0/bin/volman4.0.apk installed on device 
[2012-07-07 15:25:11 - volman4.0] Done! 

回答

1

跟蹤音量不是直線前進的,似乎......有許多不同的數據流,當用戶離開你的應用程序的音量可以改變,用戶可能會連接到具有自己音量控制的揚聲器等。

有一個選項可以定義音量按鈕應影響哪個流:Activity.setVolumeControlStream()

但我建議重點關注AudioManager,它充滿了有用的方法和意圖,如AudioManager.ACTION_AUDIO_BECOMING_NOISY

如果您想獲得特定的幫助,請發佈您寫的相關代碼以及任何logcat錯誤。希望有所幫助!

+0

肯定會給我一點時間,我會在問題欄中發表。 – 2012-07-07 19:22:44

+0

我添加了有問題的代碼。以及LogCat。 – 2012-07-07 19:29:34