0

xml ファイルにイメージビューとボタンがあります。image1 を読み込んで song1.mp3 ファイルを再生します。曲が終わったら、次の画像を読み込んで song2.mp3 の曲を再生し、最後の画像まで続けます。アプリケーションを閉じて終了するためのボタン。

 import android.media.MediaPlayer;
 import android.media.MediaPlayer.OnCompletionListener;
 import android.os.Bundle;
 import android.widget.ImageView;
 import android.app.Activity;
 import android.content.res.AssetFileDescriptor;

public class MainActivity extends Activity {
 public MediaPlayer mpp;
 final int image[] = {R.drawable.apple,R.drawable.ball,R.drawable.cat};
int i=0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
            final ImageView img = (ImageView) findViewById(R.id.img);


    String audio[]={"song1.mp3","song2.mp3","song3.mp3"};

   // MediaPlayer mp = new MediaPlayer();

    AssetFileDescriptor descriptor;
            try {
                descriptor = getAssets().openFd(audio[i]);
                mpp.setDataSource( descriptor.getFileDescriptor(), descriptor.getStartOffset(),descriptor.getLength());
                descriptor.close();
                mpp.prepare();
                mpp.start();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            mpp.setOnCompletionListener(new OnCompletionListener() {

                @Override
                public void onCompletion(MediaPlayer arg0) {
                    // TODO Auto-generated method stub
                    img.setImageResource(image[i]);
                    i++;
                    mpp.start();
                }
            });
}

}

4

2 に答える 2

0

テスト用電話のメモリ不足の場合 (私のように個人用電話を開発に使用する人に役立ちます)

  1. メモリがいっぱいになっている場合は、不要なアプリケーションをアンインストールしてください。
  2. 上記の説明が当てはまらない場合は、電話機を再起動すると問題が解決します。

Samsung captivate 電話でこのエラーが発生しました。電話を再起動すると、常に機能しました。

于 2013-04-03T20:13:07.447 に答える
0

LogCat の出力なしでは何も言えませんが、null 参照があるようです。呼び出す前img.setImageResource(image[i])に、ImageView をimg変数に割り当てる必要があります。そのビューが activity_main.xml で定義されている場合は、次の行を に追加する必要がありますonCreate()

img = (ImageView) findViewById(R.id.you_imageview_id);
于 2013-04-03T19:19:45.660 に答える