0

音声を録音して SD カードに保存するアプリケーションを 1 つ作成しています。次に、
このファイルを開き、それぞれのファイルをクリックして、再生またはその他のオプションを希望します。
しかし、そのリスト項目をクリックしても再生されません。どこに問題があるのか​​ わかりません。これが私のコードです。

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

private void init_phone_music_grid() {
      System.gc();
      String[] proj = { MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Video.Media.SIZE };
      musiccursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
 proj, null, null, null);
      count = musiccursor.getCount();
      musiclist = (ListView) findViewById(R.id.PhoneMusicList);
      musiclist.setAdapter(new MusicAdapter(getApplicationContext()));

      musiclist.setOnItemClickListener(musicgridlistener);
      mMediaPlayer = new MediaPlayer();
  }

   private OnItemClickListener musicgridlistener = new OnItemClickListener() {
      public void onItemClick(AdapterView parent, View v, int position,
          long id) {
            System.gc();
            music_column_index = musiccursor
        .getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);
            musiccursor.moveToPosition(position);
            String filename = musiccursor.getString(music_column_index);

                  try {
                       if (mMediaPlayer.isPlaying()) {
                            mMediaPlayer.reset();
                       }
                       mMediaPlayer.setDataSource(filename);
                       mMediaPlayer.prepare();
                       mMediaPlayer.start();
                 } catch (Exception e) {

                 }
           }
        };

        public class MusicAdapter extends BaseAdapter {
          private Context mContext;

          public MusicAdapter(Context c) {
                mContext = c;
          }

          public int getCount() {
                return count;
          }

          public Object getItem(int position) {
                return position;
          }

          public long getItemId(int position) {
                return position;
          }

          public View getView(int position, View convertView, ViewGroup parent) {
                System.gc();
                TextView tv = new TextView(mContext.getApplicationContext());
                String id = null;
                if (convertView == null) {
                      music_column_index = musiccursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME);
                      musiccursor.moveToPosition(position);
                      id = musiccursor.getString(music_column_index);
                      music_column_index = musiccursor
                 .getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE);
                      musiccursor.moveToPosition(position);
                      id += " Size(KB):" + musiccursor.getString(music_column_index);
                      tv.setText(id);
                } else
                      tv = (TextView) convertView;
                return tv;
          }
    }
}  

ヒントを教えてください。前もって感謝します..

4

1 に答える 1

0

2つを入れ替えてみてはどうですか

musiclist.setOnItemClickListener(musicgridlistener);
mMediaPlayer = new MediaPlayer();

これに

mMediaPlayer = new MediaPlayer();
musiclist.setOnItemClickListener(musicgridlistener);

または MediaPlayer 参照をonItemClick()

于 2012-08-03T09:58:37.180 に答える