2012-08-03 190 views
0

我正在创建一个应用程序,它可以录制语音并将其存储在SD卡中。然后我打开
这个文件,并希望通过点击相应的文件播放或其他选项。
但是,当我点击该列表项目,它不会播放。我不明白问题在哪里。这是我的代码。音频文件未播放

@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; 
      } 
    } 
} 

请给我任何提示。 在此先感谢..

+1

内的MediaPlayer参考你检查过该文件包含任何大小或其空(0 MB)? – Praveenkumar 2012-08-03 09:54:14

+0

您是否添加了所有权限? – MAC 2012-08-03 09:54:18

+0

@SpK no。它不是空的.. – 2012-08-03 09:56:37

回答

0

你怎么样切换两个

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

这个

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

或将onItemClick()

+0

它不工作.... – 2012-08-03 10:08:03