충돌 :프로그래밍 방식으로 전화를 한 후, 내 안드로이드 응용 프로그램 제목은 내 응용 프로그램에서이 코드 조각을 가지고 ... 모든 설명
String url = createTelUrl("3112007315");
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse(url));
context.startActivity(intent);
그것은 전화를 걸 않지만, 통화가 끝나면 한 번, 내 응용 프로그램이 충돌합니다. 전화가 끝나면 내 신청서로 돌아가고 싶지만, this post을 읽으면 가능하지 않은 것 같습니다. 그럼 ... 어쨌든 적어도 내 응용 프로그램을 일시 중지하고 통화가 끝나면 다시 시작할 수 있습니까?
는 편집 : 내가받은 두 답변을
덕분에, 나는 내 목표에 정말 가까이있어 기분이 ... 나는 이미 너희들이 제시 한 몇 가지 일을했다. 하지만, 어쩌면 내가 응용 프로그램의 일부 내용을 설명하지 않았다 ... 나는 개발 중이다 Millonarie가되고 싶은 사람 게임, 그래서 나는 전화를 구현할 필요가있다. (나는 그것이 미국이나 다른 나라들에서 어떻게 불려지는지 모른다. 그러나 여기에서는 이것을 "친구에게 전화"라고 부릅니다).
어쨌든 ... 나는이 응용 프로그램에 너무 많은 변경을했는데 지금은 충돌하지 않습니다. 그러나 UI가 그려진 Canvas는 호출자가 종료되면 표시되지 않습니다.
나는 UI가 들어있는 SurfaceView
입니다. 호출이 나는 검은 색 화면을 얻을 종료되면,
@Override
public void run() {
Canvas c;
while (_run) {
c = null;
try {
c = _surfaceHolder.lockCanvas(null);
// Check if should wait
synchronized (_surfaceHolder) {
_panel.onDraw(c);
}
} finally {
// do this in a finally so that if an exception is thrown
// during the above, we don't leave the Surface in an
// inconsistent state
if (c != null) {
_surfaceHolder.unlockCanvasAndPost(c);
}
}
}
}
그러나 : 그 SurfaceView
를 들어 내가 UI를 갱신하기위한 것입니다 스레드를 생성 ...이 스레드가 무엇을 기본적으로. 표면이 있습니다 (아직 터치 이벤트를받을 수 있기 때문에 그것을 압니다). 그러나 아무것도 보이지 않습니다. 이것은 좋은 일
public void surfaceCreated(SurfaceHolder holder) {
hilo.setRunning(true);
try{
hilo.start();
}catch(IllegalThreadStateException ite){
Log.e("wwtbam", "god dammed");
}
}
내가 전화 통화를 구현하기 시작하기 전에 : 계정에 걸릴 수있는 또 다른 것은 내가 SurfaceView
클래스에서 스레드를 시작하고 방법이다. 여기서 문제는 일단 호출이 종료되고 스레드가 이미 시작되었으므로 IllegalThreadStateException
을 던지는 start 메소드를 다시 실행한다는 것입니다. 호출하는 동안 UI 스레드를 일시 중지하기 위해 일부 '기술'을 사용해 보았지만이 문제를 해결할 수 없었습니다. 나는 다음과 같은 일을 시도했다 :
// this in the UI thread class
if(haveToWait)
wait();
....
// this in the surface view class
if(callEnded)
hilo.notify();
그러나 그것은 작동하지 않았다. 또한 wait();
대신 sleep(50);
을 사용하는 것과 같은 다른 '트릭'을 시도했지만 작동하지 않습니다.
내가 제공 한 모든 정보를 통해 ... 내게 어떤 제안을 할 수 있습니까?
감사합니다 ... 나는 새로운 정보를 포함하여 게시물을 편집했다. 더 정보를 제공하도록 답장을 보내 – Cristian