2012-09-18 4 views
0

미디어 플레이어를 사용하고 있습니다. 연결 URL 및 미디어 플레이어 준비가 진행되는 동안 진행률 표시 줄을 표시하고 싶지만 표시 할 수 없습니다. 실행 방법에Android : ProgressBar 작동하지 않음

public class MainActivity extends Activity implements OnClickListener, Runnable{ 

MediaPlayer mPlayer; 
ProgressBar pBar = null; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Continue(); 
} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 
public void Connect() 
{   
    try { 
     Toast.makeText(getApplicationContext(),"Yayın Açılana Kadar Lütfen Bekleyiniz" , Toast.LENGTH_SHORT).show(); 
     mPlayer.prepare(); 
    } catch (IllegalStateException e) { 
     Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show(); 
     e.printStackTrace(); 
    } catch (IOException e) { 
     Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show(); 
     e.printStackTrace(); 
    } 

    mPlayer.start(); 
    pBar.setVisibility(ProgressBar.VISIBLE); 
    pBar.setProgress(0); 
    pBar.setMax(mPlayer.getDuration()); 
    new Thread(this).start(); 
    if(mPlayer!=null)pBar.setVisibility(ProgressBar.GONE); 
} 
public void Continue() 
{ 
    mPlayer = new MediaPlayer(); 
    String str = "http:MyURL"; 
    mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    try { 
     mPlayer.setDataSource(str); 
    } catch (IllegalArgumentException e) { 
     // TODO Auto-generated catch block 
     Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show(); 
     e.printStackTrace(); 
    } catch (IllegalStateException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show(); 
     e.printStackTrace(); 
    } 
    Connect(); 
} 
public void run() { 
    // TODO Auto-generated method stub 
    int currentPosition =0; 
    int total = mPlayer.getDuration(); 
    while(mPlayer!=null && currentPosition<total){ 
     try{ 
      Thread.sleep(1000); 
      currentPosition = mPlayer.getCurrentPosition(); 
     }catch(InterruptedException e){ 
      return; 
     }catch(Exception e){ 
      return; 
     } 
     pBar.setProgress(currentPosition); 
     } 
    } 
} 
+0

나중에 참조 할 수 있도록 문제에 대한 설명을 추가하십시오. '할 수 없다'는 말은 문제가 무엇인지 전혀 알 수 없습니다. 빈 화면입니까? 강제 종료 하시겠습니까? 예외? 전화가 폭발 했나요? 설명력이 있어야합니다. – Tim

답변

1

당신이 바로 표시됩니다 thread..it를 시작한 후 pBar.setVisibility(ProgressBar.GONE);를 호출 한 후 즉시 사라진다 ..
이동 그것은 처리가 완료된 후.

+0

메소드 끝을 실행하기 위해 제거했지만 여전히 작동하지 않습니다. – osmanyilmaz2005

+0

덧붙여서 pBar.show() – Nermeen

+0

ProgressBar.show()는 존재하지 않습니다. 그리고 난 pBar.setVisibility (ProgressBar.VISIBLE); – osmanyilmaz2005