N
newpageart
Neues Mitglied
- 0
Hallo liebe Forengemeinde,
ich habe mir mit dem Alarmmanger eine Erinnerungsfunktion gebastelt. Diese Ruft um eine bestimmte Uhrzeit ein Activity mit eine Erinnerungsmeldung auf. dazu wird noch ein Klingelton abgespielt. Dies funktioniert auch soweit ganz gut. Doch leider ist der Klingelton immer in der saeleben Lautstärke. Ich hätte gern das die lautstärke abhängig von den Systemeinstellungen ist. Also wenn die allgemeine lautstärke auf leise steht, dann soll der Klingelnon ebenfalls leise ertönen. Ausserdem soll der Vibrationsalarm verwendet werden, wenn das System auf vibration eingestellt ist. Hat damit jemand erfahrung und könnte mir dabei helfen?
Hier der Code mit dem ich den Klingelton starte.
Vielen lieben Dank!
Tom
ich habe mir mit dem Alarmmanger eine Erinnerungsfunktion gebastelt. Diese Ruft um eine bestimmte Uhrzeit ein Activity mit eine Erinnerungsmeldung auf. dazu wird noch ein Klingelton abgespielt. Dies funktioniert auch soweit ganz gut. Doch leider ist der Klingelton immer in der saeleben Lautstärke. Ich hätte gern das die lautstärke abhängig von den Systemeinstellungen ist. Also wenn die allgemeine lautstärke auf leise steht, dann soll der Klingelnon ebenfalls leise ertönen. Ausserdem soll der Vibrationsalarm verwendet werden, wenn das System auf vibration eingestellt ist. Hat damit jemand erfahrung und könnte mir dabei helfen?
Hier der Code mit dem ich den Klingelton starte.
Code:
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alarm);
playSound(this, getAlarmUri());
}
private void playSound(final Context context, final Uri alert) {
mMediaPlayer = new MediaPlayer();
try {
mMediaPlayer.setDataSource(context, alert);
final AudioManager audioManager = (AudioManager) context
.getSystemService(Context.AUDIO_SERVICE);
if (audioManager.getStreamVolume(AudioManager.STREAM_ALARM) != 0) {
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
mMediaPlayer.prepare();
mMediaPlayer.start();
}
} catch (IOException e) {
Log.v("Survey", "ERROR playSound(): "+e.toString());
}
try {
RingtoneStopper stopper = new RingtoneStopper(30000,1000);
stopper.start();
} catch (Exception e) {
Log.v("Survey", "ERROR playSound(): "+e.toString());
}
}
//define a countdown timer for 30 seconds that stops the MediaPlayer
public class RingtoneStopper extends CountDownTimer{
public RingtoneStopper(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish() {
try {
Log.v("Survey", "STOP mMediaPlayer (onFinish)");
mMediaPlayer.stop();
} catch (Exception e) {
Log.v("Survey", "ERROR RingtoneStopper: "+e.toString());
}
}
@Override
public void onTick(long millisUntilFinished) {
}
}
private Uri getAlarmUri() {
Uri alert = RingtoneManager
.getDefaultUri(RingtoneManager.TYPE_ALARM);
if (alert == null) {
alert = RingtoneManager
.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
if (alert == null) {
alert = RingtoneManager
.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
}
}
return alert;
}
Tom