ユーザーが写真を撮ってからHTTP経由で画像を送信できるAndroidアプリを開発しようとしています。ネイティブカメラを使用しています。
ユーザーが写真を撮って保存ボタンを押すと、アプリが情報を送信して応答を待つ間、黒い画面が表示されます。プログレスダイアログを表示したいのですが、何を試しても黒い画面が表示されたままになり、プログレスダイアログは応答を取得して戻るボタンを押した後にのみ表示されます。setContentView() を使用してみましたが、役に立ちませんでした。スレッドは HTTP リクエスト用です。
カメラの開始と終了のコードは次のとおりです。
protected void startCameraActivity()
{
File file = new File( _path );
Uri out = Uri.fromFile( file );
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE );
intent.putExtra( MediaStore.EXTRA_OUTPUT, out );
startActivityForResult( intent, 0 );
}
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
switch( resultCode )
{
case 0:
break;
case -1:
m_ProgressDialog = ProgressDialog.show(MainActivity.this, "Please wait...", "Uploading data ...", true, true);
onPhoto();
break;
}
}
protected void onPhoto()
{
taken = true;
PipedOutputStream pos = new PipedOutputStream();
PipedInputStream pis = null;
try {
pis = new PipedInputStream(pos);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Sender sender = new Sender(pos);
Receiver receiver = new Receiver(pis);
sender.start();
receiver.start();
try {
sender.join();
receiver.join();
try {
field.setText(receiver.getIn().readUTF());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
pis.close();
pos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}