2011-06-18 36 views
11

Potrzebuję do odtwarzania krótkiego dźwięku w mojej aplikacji. Napisałem poniższy kod, ale nie mam dźwięku i na moim telefonie Samsung pojawiły się dziwne wibracje. Ale w tym samym czasie ten kod działa dobrze na moim symulatorze Androida. Mój kod to:Odtwórz dźwięk za pomocą SoundPool

package com.samplers; 

import android.app.Activity; 
import android.media.SoundPool; 
import android.media.AudioManager; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class FixVibroActivity extends Activity { 
    /** Called when the activity is first created. */ 

    private Button white; 
    private SoundPool spool; 
    private int soundID; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     this.setVolumeControlStream(AudioManager.STREAM_MUSIC); 
     spool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0); 
     soundID = spool.load(this, R.raw.error, 1); 

     white = (Button)findViewById(R.id.whiteBtn); 
     white.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       Sound(); 
      } 
     }); 
    } 

    public void Sound(){ 
     AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE); 
     float volume = (float) audioManager.getStreamVolume(AudioManager.STREAM_MUSIC); 
     spool.play(soundID, volume, volume, 1, 0, 1f); 
    }; 
} 

Proszę mi pomóc rozwiązać ten problem! Z góry dziękuję! :)

+1

Czy możesz sprawdzić, czy logcat drukuje jakieś interesujące błędy? – FeatureCreep

Odpowiedz

7

Może to być problem z regulacją głośności lub z poprawnym odtwarzaniem pliku dźwiękowego: jeśli zmienisz funkcję Sound() na to, co robi? Jeśli Twój telefon nie obsługuje poprawnie formatu pliku R.raw.error, ale emulator robi to poprawnie, byłoby to BARDZO dziwne.

public void Sound(){ 
     AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE); 
     float volume = (float) audioManager.getStreamVolume(AudioManager.STREAM_MUSIC); 
     android.util.Log.v("SOUND","["+volume+"]["+spool.play(soundID, volume, volume, 1, 0, 1f)+"]"); 
    }; 
+2

Dziękujemy za powtórkę! Problem jest rozwiązany! :) Zmieniłem format pliku z * .ogg na * .wav i bingo !!!! :) Dzięki za pomoc! :) – lubart

+4

Ah, telefon nie obsługuje ogg, ale robi to emulator. Dobrze wiedzieć. Myślałem, że to może być format pliku. – Femi

+0

Telefon obsługuje ten format. Ten plik był odtwarzany za pomocą MediaPlayer, ale tylko jeden raz, a potem była cisza. W każdym razie dobra wiadomość dla mnie :) Jeszcze raz dziękuję! :) – lubart

Powiązane problemy