android tester
- Forum-Beiträge: 29
10.06.2013, 14:38:06 via Website
10.06.2013 14:38:06 via Website
Hallo,
ich habe mich mal wieder etwas an meine App gesetzt und komme nicht weiter, ich habe folgendes Problem:
Ich möchte x sekunden nach anrufbeginn einen Ton abspielen. ich habe nun mehrere Verianten getestet, einmal mit Timer und TimerTask, diesen über ein Datum oder eine millisekundenzahl angesteuert. Nun habe eine Runnable Class welche den Ton abspielt und diese Runnable wird von einem Handler aufgerufen. Alle Varianten führen zum gleichen Resultat: der Ton wird erfolgreich abgespielt, wenn der Timer auf 8 Sekunden oder weniger eingestellt ist, ist er höher wird er nicht ausgelöst, und das ist bei allen Varianten gleich... Ich habe mir nun gedacht ok wenn er kurze Timer haben will dann rufe ich die Runnable 2 mal auf und setze den Timer auf 5 sec und starte den Ton erst beim 2. Aufruf aber das geht auch nicht. selbes Spiel setze ich den Timer auf 4 sekunden also insgesamt 8, so wird der Ton abgespielt....
Ich verstehs einfach nicht, ich will doch nur nach 10 oder 20 sekunden im Anruf einen Ton abspielen....
Hoffe ihr könnt mir helfen! Bin echt für jeden Tip dankbar.
Hier noch meine aktuelle Version vom Code (gekürzt):
Der listener der den ersten Aufruf tätigt:
Die Runnable (counter wird mit 0 erzeugt):
Und meine playSound Methode:
ich habe mich mal wieder etwas an meine App gesetzt und komme nicht weiter, ich habe folgendes Problem:
Ich möchte x sekunden nach anrufbeginn einen Ton abspielen. ich habe nun mehrere Verianten getestet, einmal mit Timer und TimerTask, diesen über ein Datum oder eine millisekundenzahl angesteuert. Nun habe eine Runnable Class welche den Ton abspielt und diese Runnable wird von einem Handler aufgerufen. Alle Varianten führen zum gleichen Resultat: der Ton wird erfolgreich abgespielt, wenn der Timer auf 8 Sekunden oder weniger eingestellt ist, ist er höher wird er nicht ausgelöst, und das ist bei allen Varianten gleich... Ich habe mir nun gedacht ok wenn er kurze Timer haben will dann rufe ich die Runnable 2 mal auf und setze den Timer auf 5 sec und starte den Ton erst beim 2. Aufruf aber das geht auch nicht. selbes Spiel setze ich den Timer auf 4 sekunden also insgesamt 8, so wird der Ton abgespielt....
Ich verstehs einfach nicht, ich will doch nur nach 10 oder 20 sekunden im Anruf einen Ton abspielen....
Hoffe ihr könnt mir helfen! Bin echt für jeden Tip dankbar.
Hier noch meine aktuelle Version vom Code (gekürzt):
Der listener der den ersten Aufruf tätigt:
1private class PhoneCallListener extends PhoneStateListener {
2 ...
3 if (TelephonyManager.CALL_STATE_OFFHOOK == state) {
4 playHandler.postDelayed(runnable, 4000); // mit 4000ms funktioniert es mit 5000 nicht...
5 }
2 ...
3 if (TelephonyManager.CALL_STATE_OFFHOOK == state) {
4 playHandler.postDelayed(runnable, 4000); // mit 4000ms funktioniert es mit 5000 nicht...
5 }
Die Runnable (counter wird mit 0 erzeugt):
1private Runnable runnable = new Runnable() {
2 public void run() {
3 if (counter > 0){
4 String testPath = Environment.getExternalStorageDirectory() + "/test.mp3";
5 playSound();
6 counter = 0;
7 }
8 else{
9 counter++;
10 playHandler.postDelayed(this, 4000); // mit 4000ms funktioniert es mit 5000 nicht...
11 }
12 }
13};
2 public void run() {
3 if (counter > 0){
4 String testPath = Environment.getExternalStorageDirectory() + "/test.mp3";
5 playSound();
6 counter = 0;
7 }
8 else{
9 counter++;
10 playHandler.postDelayed(this, 4000); // mit 4000ms funktioniert es mit 5000 nicht...
11 }
12 }
13};
Und meine playSound Methode:
1public void playRecord(){
2 mPlayer = MediaPlayer.create(getApplicationContext(), R.raw.test);
3 mPlayer.start();
4}
2 mPlayer = MediaPlayer.create(getApplicationContext(), R.raw.test);
3 mPlayer.start();
4}
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.