도움이 필요할 수 있습니다. 여기에 문제가 있으며 지금까지 내가 한 일이 있습니다.활동을 동결하지 않고 PCM AudioTrack을 재생하기 위해 AsyncTask를 사용하십시오.
문제 :
은 내가 이전에 기록 된 PCM 파일을 재생합니다. 이 파일은 더 커질 수 있으므로 audiotrack을 사용하여이 파일을 재생합니다. 이것은 꽤 잘 작동합니다. 하지만 나는 그 활동이 멈추길 원치 않는다. 난 이미 스레드를 시도하고 그래서, 지금은 asynctask에서 일하고 있지만 활동은 여전히 응답하지 않습니다.
이 내가 무엇을 가지고 있습니다 : UI가 활동
, 난 새로운 waveplayer 객체를 생성하고 실행 해보십시오.
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/**
* Handles ShortClicks for ListView
*/
OnItemClickListener itemlistener = new OnItemClickListener(){
MediaPlayer mp=null;
String currentlyplaying = null;
@Override
public void onItemClick(AdapterView<?> adaptview, View clickedview, int position,
long id) {
String pathtofile = (String) adaptview.getItemAtPosition(position);
if(pathtofile.contains(".wav"))
{
//HQ!
if(mp==null)
{
clickedview.setSelected(true);
try
{
WavePlayer t = null;
//TODO: //add thread waveplayer to play file!
try {
t = new WavePlayer(pathtofile);
t.execute((Void)null);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
clickedview.postDelayed(new Deselector(clickedview, t), 1000);
currentlyplaying = pathtofile;
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
}
}
else
{
}
}
else{
//NO HQ
//you dont need to know that :)
}
}
};
클래스 deselector : 관련된 재생이 좋은 작품
/**
* This Runnable tries to deselect the view after playing the audio file.
* @author quant
*
*/
class Deselector implements Runnable
{
View view = null;
AsyncTask thread;
Deselector(View view, AsyncTask t)
{
this.view = view ;
this.thread = t;
}
@Override
public void run() {
// TODO Auto-generated method stub
try {
view.setSelected(false);
thread.cancel(true);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
모든 것이, 내가 내 목소리 자체가 잘 작동 재생을들을 수있다 ...하지만 여전히 주요 활동의 GUI가 동결 않습니다는 /입니다 응답 없음.
누군가가 도움을 주길 바랍니다. 미리
마르쿠스
편집 해 주셔서 대단히 감사합니다. 코드 태그가 제게 너무 좋아 보이지 않습니다. ( – mad
이클립스, Ctrl + i, 및 뒤로 복사 됨 : ') –
원래 이식에서 왔습니다. : D – mad