2011-06-18 52 views
11

Tôi cần phát một âm thanh ngắn trong ứng dụng của mình. Tôi đã viết đoạn mã sau nhưng tôi không có âm thanh và rung động kỳ lạ xuất hiện trên điện thoại Samsung của tôi. Nhưng đồng thời mã này hoạt động tốt trên trình mô phỏng android của tôi. Mã của tôi là:Phát âm thanh với 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); 
    }; 
} 

Giúp tôi giải quyết vấn đề này, vui lòng! Cảm ơn bạn trước! :)

+1

Bạn có thể kiểm tra xem logcat có in bất kỳ lỗi thú vị nào không? – FeatureCreep

Trả lời

7

Có thể xảy ra sự cố với điều khiển âm lượng hoặc tệp âm thanh của bạn phát chính xác: nếu bạn thay đổi chức năng Sound() thành chức năng này thì sao? Nếu điện thoại của bạn không xử lý chính xác định dạng tệp R.raw.error nhưng trình giả lập đang thực hiện đúng cách sẽ RẤT lạ.

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

Cảm ơn bạn đã phát lại! Vấn đề đã được giải quyết! :) Tôi đã thay đổi định dạng tập tin từ * .ogg thành * .wav và bingo !!!! :) Cảm ơn vì sự giúp đỡ! :) – lubart

+4

Ah, điện thoại không hỗ trợ ogg nhưng bộ mô phỏng. Tốt để biết. Nghĩ rằng nó có thể là định dạng tập tin. – Femi

+0

Điện thoại hỗ trợ định dạng này. Tệp này được phát bằng MediaPlayer nhưng chỉ một lần và sau đó là sự im lặng. Trong mọi trường hợp tin tốt cho tôi :) Cảm ơn một lần nữa! :) – lubart

Các vấn đề liên quan