-1

設定アクティビティを使用して、システムボリューム関数に回避策を書き込むことは可能ですか?

たとえば、音量が大きすぎるとユーザーにメッセージを出力したいのですが、「音量が大きすぎます」というトーストがポップアップ表示されます。

私は今トーストを作る方法を知っています。私は好みの活動について考えています。ここでアイデアを蹴り回すだけです。

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!
4

1 に答える 1

1

音量レベルの追跡は、見た目ほど簡単ではありません...さまざまなストリームがあります。ユーザーがアプリを離れると、音量が変わる可能性があります。ユーザーは、独自の音量コントロールを使用してスピーカーに接続する場合があります。

ボリュームボタンが影響を与えるストリームを定義するオプションがあります:Activity.setVolumeControlStream()

ただし、 AudioManagerに焦点を当てることをお勧めします。これには、 AudioManager.ACTION_AUDIO_BECOMING_NOISYなどの便利なメソッドとインテントが含まれています。

特定のヘルプが必要な場合は、作成した関連コードとlogcatエラーを投稿してください。お役に立てば幸いです。

于 2012-07-07T19:11:44.410 に答える