마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

mp3 플레이어 개발 시 음악정보 리스트 값을 얻어오는 문제...

0 추천
//메인
 public void mOnClick(View v) {
  switch(v.getId()) {
  //재생 및 정지
  case R.id.play:
   if(mPlayer.isPlaying() == false) {
    mPlayer.start();
    mPlayBtn.setText("Pause");
   } else {
    mPlayer.pause();
    mPlayBtn.setText("Play");
   }
   break;
   //재생 정지. 재시작을 위해 미리 준비
  case R.id.stop:
   mPlayer.stop();
   mPlayBtn.setText("Play");
   mProgress.setProgress(0);
   Prepare();
   break;
  case R.id.prev:
  case R.id.next:
   boolean wasPlaying = mPlayer.isPlaying();
   
   if(v.getId() == R.id.prev){
    mIdx = (mIdx == 0 ? mList.size() - 1 : mIdx - 1);
   } else {
    mIdx = (mIdx == mList.size() - 1 ? 0 : mIdx + 1);
   }
   
   mPlayer.reset();
   LoadMedia(mIdx);
   
   //이전에 재생 중이었으면 다음 곡 바로 재생
   if(wasPlaying) {
    mPlayer.start();
    mPlayBtn.setText("Pause");
   }
   break;
  case R.id.list:
   Intent intent = new Intent(this, List.class);
   startActivityForResult(intent, REQUEST_CODE_MUSIC_LIST);
   
   sendBroadcast(intent);
   break;
  }
 }
 
 
 
 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  // TODO Auto-generated method stub
  super.onActivityResult(requestCode, resultCode, data);

  if(requestCode == RESULT_OK) {
   
   if(resultCode == REQUEST_CODE_MUSIC_LIST) {
     
    if(data != null) {
     
     String musicList = data.getStringExtra(EXTRA_MUSIC_INFO);
    }
   }
  }
 }

<main 액티비티에서 버튼 처리 메소드와 넘겨받은 값을 처리하는 onActivityResult()>





public void onItemClick(AdapterView<?> adpater, View view, int position, long id) {
  Uri musicURI = Uri.withAppendedPath(
                MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, "" + mMusicAdapter.getMusicID(position));
  
  Intent intent = new Intent();
  intent.putExtra(MainActivity.EXTRA_MUSIC_INFO, musicURI);
  setResult(MainActivity.REQUEST_CODE_MUSIC_LIST, intent);
  
  finish();
 }

<List 클래스의 intent 처리 부분...>

 

 

mp3 플레이어를 제작중인 학생입니다.

현재 main액티비티는 구성을 완료하였고..

list란 버튼을 누를때 새로운 곡 정보가 목록으로 표시되는

리스트 액티비티를 생성합니다. (앨범, 곡명, 가수 정보가 나오는...)

여기까지는 구현을 해봤는데..

 

문제는.. 리스트 뷰에서 곡을 클릭하면 그 data정보가 main으로

넘어와서 그 곡을 플레이해야 하는데..

값을 넘겨받는 과정에서 어떻게 처리를 해야할지 몰라 질문을 드립니다. ㅠㅠㅠ

인텐트로 값을 받아오려고 하는데..

제가 곡 정보를 uri 형식으로 받아오려고 했습니다. 근데.. 문제가 무엇인지 모르겠네요..

 

재 코딩까지는 아니어도.. 해결 방법만이라도 알려주시면 감사하겠습니다. ㅠㅠㅠ

 

 

곰팅이푸우 (140 포인트) 님이 2014년 3월 31일 질문

1개의 답변

+1 추천
<ListActivity>
public void onItemClick(AdapterView<?> adpater, View view, int position, long id) {
  Uri musicURI = Uri.withAppendedPath(
                MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, "" + mMusicAdapter.getMusicID(position));
   
  Intent intent = new Intent();
  intent.putExtra(MainActivity.EXTRA_MUSIC_INFO, musicURI);
  setResult(Activity.RESULT_OK, intent); 
   
  finish();
 }
<MainActivity>
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  // TODO Auto-generated method stub
  super.onActivityResult(requestCode, resultCode, data);
 
  if(resultCode == RESULT_OK) {
    
   if(requestCode == REQUEST_CODE_MUSIC_LIST) {
      
    if(data != null) {
      
     String musicList = data.getStringExtra(EXTRA_MUSIC_INFO);
    }
   }
  }
 }
 
비교해보시고 뭐가 잘못됬는지는 스스로 생각해보세요.

 

dev_아마 (9,750 포인트) 님이 2014년 3월 31일 답변
곡정보는 uri형식인데.. 제가 메인액티비티에서 String 형식으로 리스트를 불러오도록 해서 그런건가요??
...