首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >7个声音工作-8和9个声音不工作

7个声音工作-8和9个声音不工作
EN

Stack Overflow用户
提问于 2012-06-29 23:31:28
回答 2查看 74关注 0票数 0

我正在写一个基本的声卡。我已经把它放到我的手机上了,它工作得很好。很大程度上是这样。前7个按钮有效,但第8和第9个按钮无效。我唯一的想法是这是一个内存问题,我不应该在程序开始的时候同时创建所有9个mp。也许8号和9号对记忆来说有点太多了。

有没有人知道为什么第8和第9个按钮在下面的代码中不起作用?它们可以在模拟器中工作,但会使我的手机崩溃。我知道代码并不完美--我正在学习。但是,如果有一个正确的方向,那就太好了。

感谢您能提供的任何帮助!

代码语言:javascript
复制
package testing.Variables.Levack;

import android.app.Activity;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Button;
import android.view.View.OnClickListener; 
import android.widget.Button;
import android.view.View;
import android.media.MediaPlayer;

public class TestingVariablesActivity extends Activity {
    /** Called when the activity is first created. */
    TextView tt;
    Button messageButton1,messageButton2,messageButton3,messageButton4,messageButton5,messageButton6,messageButton7,messageButton8,messageButton9;

  MediaPlayer mp1,mp2,mp3,mp4,mp5,mp6,mp7,mp8,mp9 = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mp1 = MediaPlayer.create(this, R.raw.baboon);
        mp2 = MediaPlayer.create(this, R.raw.backoff);
        mp3 = MediaPlayer.create(this, R.raw.dark6);
        mp4 = MediaPlayer.create(this, R.raw.dontneedroads);
        mp5 = MediaPlayer.create(this, R.raw.hua);
        mp6 = MediaPlayer.create(this, R.raw.hulk);
        mp7 = MediaPlayer.create(this, R.raw.itsaclipon);
        mp8 = MediaPlayer.create(this, R.raw.ht);
        mp9 = MediaPlayer.create(this, R.raw.truth1);

   messageButton1=(Button)findViewById(R.id.messageButton1);
   messageButton1.setOnClickListener(startListener);

   messageButton2=(Button)findViewById(R.id.messageButton2);
   messageButton2.setOnClickListener(startListener);

   messageButton3=(Button)findViewById(R.id.messageButton3);
   messageButton3.setOnClickListener(startListener);

   messageButton4=(Button)findViewById(R.id.messageButton4);
   messageButton4.setOnClickListener(startListener);

   messageButton5=(Button)findViewById(R.id.messageButton5);
   messageButton5.setOnClickListener(startListener);

   messageButton6=(Button)findViewById(R.id.messageButton6);
   messageButton6.setOnClickListener(startListener);

   messageButton7=(Button)findViewById(R.id.messageButton7);
   messageButton7.setOnClickListener(startListener);

  messageButton8=(Button)findViewById(R.id.messageButton8);
 messageButton8.setOnClickListener(startListener);

   //messageButton9=(Button)findViewById(R.id.messageButton9);
   //messageButton9.setOnClickListener(startListener);

    }

  private OnClickListener startListener =new OnClickListener()  {
    public void onClick(View v)
    { 

               switch(v.getId()) { 
                   case R.id.messageButton1: 
                        mp1.start();
                        break; 
                   case R.id.messageButton2: 
                         mp2.start();
                         break; 
                   case R.id.messageButton3: 
                        mp3.start();
                        break; 
                   case R.id.messageButton4: 
                        mp4.start();
                        break;  
                   case R.id.messageButton5: 
                        mp5.start();
                        break; 
                   case R.id.messageButton6: 
                        mp6.start();
                        break;  
                   case R.id.messageButton7: 
                        mp7.start();
                        break; 
                   case R.id.messageButton8: 
                        mp8.start();
                        break;
                //   case R.id.messageButton9: 
                       //   mp9.start();
                        //break; 

           } 


        }   
        };









    }
EN

回答 2

Stack Overflow用户

发布于 2012-06-30 00:59:34

我以前也遇到过类似的问题--这个问题似乎更多的是声音方面的问题。我创建了一个MediaPlayers集合,在第七个集合之后,它会在使用某些设备时崩溃,在我的例子中是Droid X2。

在X2上创建各种MediaPlayer实例时,在8号MediaPlayer创建的Logcat将始终捕获java.io.IOException: Prepare failed.: status=0x1。当我在其他几个设备上测试时,这个错误从未出现过。

顺便说一句,当你使用完MediaPlayer时,一定要调用mp1.release(); -我已经追踪到了大量的内存泄漏,导致这些资源无法释放。

票数 1
EN

Stack Overflow用户

发布于 2012-06-29 23:38:40

如果你的声音不是很长,也许你应该使用SoundPool类而不是MediaPlayer解决方案。它可以让你更好地管理许多声音,也可以同时进行。

这是文档:http://developer.android.com/reference/android/media/SoundPool.html

这是一个很好的起点:http://www.droidnova.com/creating-sound-effects-in-android-part-1,570.html

这是一篇简短的文章,介绍了SoundPool和MediaPlayer http://www.stealthcopter.com/blog/2010/08/android-soundpool-vs-mediaplayer-focus-on-soundboards-and-memory-problems/之间的区别

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11264664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档