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

미디어 플레이어 질문입니다!

0 추천
프로그램을 열심히하고있는 학생입니다. 현재 워키토키 프로그램을 만들고 있는데 
이부분에서 막혀서 몇주째 인터넷으로 찾아보기만 하고 있어서 이렇게 글 올립니다
.정말 이해가 안가서 그런데 이 소스는 어떤 방식이며 어떻게 써야하나요 ? 맨땅
에 헤딩하면서 하는거라 너무 어렵네요 ... 다짜고짜 묻는형식에 죄송하지만 너무
 알고 싶습니다...


package edu.ncsu.ece.walkietalkie;

import java.io.File;
import java.io.IOException;

import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.util.Log;

public class MediaPlayerThread implements Runnable {

 public MediaPlayerThread(Object mpMonitor) {
  super();
  this.mp_monitor = mpMonitor;
 }

 public static boolean sip_start_play = false;
 public static volatile int file_num = 0;
 private static final String TAG = "WalkieTalkieEngine";
 
 Object sr_monitor = new Object();
 Object mp_monitor = new Object();
 private MediaPlayer myMediaPlayer;
 
 @Override
 public void run() {
  boolean isRunning = true;
  
  int last_file_played = 1;
  
  // Start Socket Receiver Thread
  SocketReceiverThread sr_thread = new SocketReceiverThread(9998, sr_monitor);
  Thread thread_recv_sender = new Thread(sr_thread, "Socket-Receiver");
  thread_recv_sender.start();
  
  while(isRunning)
  {
   if(last_file_played > file_num)
   {
    synchronized(sr_monitor)
    {
     try {
      sr_monitor.wait();
     } catch (InterruptedException e) {      
      e.printStackTrace();
     }
    }
   }

   Log.i(TAG, "Last File played"+last_file_played);
   Log.i(TAG, "Highest File written"+file_num);
   String path;    

   while(last_file_played<=file_num)
   {
    
    Integer fno=new Integer(last_file_played);
    path="/sdcard/file_"+ fno.toString()+".3gp";
    myMediaPlayer=new MediaPlayer();
    try {
     myMediaPlayer.setDataSource(path);
    } 
    catch (IllegalArgumentException e) 
    {
     e.printStackTrace();
    } 
    catch (IllegalStateException e) 
    {
     e.printStackTrace();
    }
    catch (IOException e) 
    {
     e.printStackTrace();
    }
    
    try 
    {
     myMediaPlayer.prepare();
    }
    catch (IllegalStateException e) 
    {
     e.printStackTrace();
    }
    catch (IOException e) 
    {
     e.printStackTrace();
    }
    
    myMediaPlayer.start();
    
    while(myMediaPlayer.isPlaying()) {}
    
    myMediaPlayer.setOnCompletionListener(new OnCompletionListener() {
     
     @Override
     public void onCompletion(MediaPlayer mp) {
      myMediaPlayer.stop();
      myMediaPlayer.release();
      myMediaPlayer=null;
     }
    });
    File fileToDelete =new File(path);
                fileToDelete.delete();
    last_file_played++;    
   }  
  }
  
 }

}

 

김캐리 (180 포인트) 님이 2014년 11월 24일 질문

1개의 답변

0 추천
네트워크로 상대방이 3gp (음성녹음된파일)을 보내면 그것을 sdcard에 저장했다가 플레이 해줍니다

결국 상대방의 목소리가 나에게 들리겠지요

 

메인 액티비티 만드신후에 라이브러리처럼 쓰시면되겠지여?
 

이 내용을 이해하는데 몇주가 걸릴정도면.. 거의 초보신거같은데 혼자 해결하시기보다

커피값이라도 주면서 주변에 선생님을 구하심이...빠를거 같아요

 

기본적인것은 연락주시면 답변해드리겠습니다

doridori2013@nate.com (네이트온가능)
익명사용자 님이 2014년 11월 24일 답변
2014년 11월 24일 수정
답변 아주아주 감사합니다. 현재 인터넷이 느려 네이트온이 안되네요 ... 사례는 하겠습니다 ... 꼭 부탁드립니다 ...많은게 아니라 기본적인것들을 묻고싶네요 ...
메일을 주셔도 되어요 간단한 질문정도는 사례를 안받지요
직접적으로 작업을 해준다면 몰라도..
...