0

這是我檢索存儲的所有歌曲的列表:播放所選擇的歌曲在不同的活動

enter code here公共類MainActivity擴展AppCompatActivity {

public static final long pos=0; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    ListView audioView = (ListView) findViewById(R.id.songView); 

    ArrayList<String> audioList = new ArrayList<>(); 

    String[] proj = { MediaStore.Audio.Media._ID,MediaStore.Audio.Media.DISPLAY_NAME, MediaStore.Audio.Media.ALBUM, 
      MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.DURATION};// Can include more data for more details and check it. 

    final Cursor audioCursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, proj, null, null, null); 

    if(audioCursor != null){ 
     if(audioCursor.moveToFirst()){ 
      do{ 
       int audioIndex = audioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME); 

       audioList.add(audioCursor.getString(audioIndex)); 
      }while(audioCursor.moveToNext()); 
     } 
    } 
    audioCursor.close(); 

    ArrayAdapter<String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,android.R.id.text1, audioList); 
    audioView.setAdapter(adapter); 

    audioView.setOnClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
      Intent now_play=new Intent(MainActivity.this, NowPlaying.class); 
      now_play.putExtra(pos, id); 
      startActivity(now_play); 
     } 
    } 

}

如何我是否已經選擇了哪首歌曲,然後如何讓該代碼播放該文件?

public class NowPlaying extends AppCompatActivity implements View.OnClickListener{ 

private ImageButton bplay; 
private ImageButton bpause; 
private ImageButton bfr; 
private ImageButton bff; 
private ImageButton breplay; 
MediaPlayer mp; 
SeekBar sb; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(layout.now_playing); 
    initializeVariables(); 

    bplay.setOnClickListener(this); 
    bpause.setOnClickListener(this); 
    bff.setOnClickListener(this); 
    bfr.setOnClickListener(this); 

    sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
     int progress=0; 

     @Override 
     public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
      this.progress=progress; 
     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 

     } 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 

     } 
    }); 

    breplay.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      mp.setLooping(true); 
     } 
    } 

} 
} 


@Override 
public void onClick(View v) { 
    switch(v) { 
     case id.play: 
      mp.start(); 
      break; 
     case id.pause: 
      mp.pause(); 
      break; 
     case id.ff: 
      mp.reset(); 
} 

} 私人無效initializeVariables(){

bplay=(ImageButton)findViewById(id.play); 
    bff=(ImageButton)findViewById(id.ff); 
    bfr= (ImageButton) findViewById(id.fr); 
    bpause=(ImageButton)findViewById(id.pause); 
    breplay=(ImageButton)findViewById(id.replay); 
    mp=new MediaPlayer(); 
    sb=(SeekBar)findViewById(id.seekBar); 
} 

}

+0

只是不downvote它。如果它以任何方式不符合堆棧標準,我將對其進行編輯。 –

回答

1

Play the selected song on a different activity

獲得所選歌曲的URI然後傳給下一個在其中要發揮活動。

做得一樣:

使用Audio.Media.DATA得到的同樣的歌曲文件路徑越來越DISPLAY_NAME

ArrayList<String> audioFilePathList = new ArrayList<>(); 
String path =audioCursor.getString(audioCursor.getColumnIndex(Audio.Media.DATA)); 
audioFilePathList.add(path); 

2.onItemClick方法使用position用於獲取選擇項目文件路徑audioFilePathList

String strSelectedPath=audioFilePathList.get(position); 
now_play.putExtra(pos, id); 
now_play.putExtra("file_path", strSelectedPath); 
startActivity(now_play); 

在從意向NowPlaying類獲取文件的路徑,並將它傳遞給MediaPlayer的玩法:

String file_path = getIntent().getStringExtra("file_path"); 

如何使用創建播放音頻文件的原始文件夾內

做吧作爲:

MediaPlayer mPlayer = MediaPlayer.create(NowPlaying.this, R.raw.soundfilename); 
mPlayer.start(); 
+0

我有另一個我忘記提到的問題: 「now_play.putExtra(pos,id);」顯示錯誤:無法解析putExtra(long,long)方法。 –

+0

@SidharthKriplani:對於其他問題,如果可能請問一個新問題,而不是編輯當前。讓我知道它是什麼 –

+0

另外,我只是知道如何使用create在原始文件夾內播放音頻文件。所以,你可以告訴第三步之後的步驟,因爲我不知道我將如何在這裏做... –

相關問題