私のAndroidアプリケーションでボタンをクリックすると、カメラアプリケーションが開きます。カメラアプリケーションで写真を撮ると、その写真がサーバーにアップロードされます。
問題:写真を撮影し、カメラアプリケーションで[保存]をクリックすると、写真がサーバーにアップロードされるまでアプリケーションに戻りません。
これはThread
、画像のアップロードが完了するのを待っているためです。
この問題を解決する方法は?カメラアプリケーションからアプリケーションに戻り、プログレスバーを表示したい。
そのための私の手順は:
->Intent
次のようにカメラアプリケーションを開くために使用します。
Intent CameraIntent =new Intent("android.media.action.IMAGE_CAPTURE");
startActivityForResult(CameraIntent,CAMERA_PIC_REQUEST);
->メソッドonActivityResult(int requestCode, int resultCode, Intent data)
では、次のコードを記述しました。Thread
Base64で画像をエンコードし、Base64でエンコードされた画像をサーバーにアップロードするを呼び出しています。
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==CAMERA_PIC_REQUEST)
{
ThumbNail=(Bitmap) data.getExtras().get("data");
ba=new ByteArrayOutputStream();
ThumbNail.compress(Bitmap.CompressFormat.JPEG,100,ba);
barray=ba.toByteArray();
str_img=Base64.encodeToString(barray,Base64.DEFAULT);
if(resultCode==Activity.RESULT_OK )
{
upload_image = new ThreadUploadImage(str_img);
upload_image.start();
while(upload_image.isAlive())
{
Thread.sleep(100);
}
}
}
}
ThreadUploadImage.java
public class ThreadUploadImage extends Thread {
String str_img,result;
String port=null,ip_addr=null;
public ThreadUploadImage(String str_img)
{
this.str_img=str_img;
}
public void run()
{
try
{
HttpClient client =new DefaultHttpClient();
ip_addr=StaticVariables.ip_addr;
port=StaticVariables.port;
if(ip_addr!=null && port!=null)
{
List<NameValuePair> l =new ArrayList<NameValuePair>();
l.add(new BasicNameValuePair("img_str",str_img));
post.setEntity(new UrlEncodedFormEntity(l));
HttpResponse response=client.execute(post);
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
StringBuilder builder = new StringBuilder();
for (String line = null; (line = reader.readLine()) != null;) {
builder.append(line).append("\n");
}
this.result = builder.toString();
Log.e("result_is",result);
} catch(Exception e) {
e.printStackTrace();
}
}
}
問題:写真を撮影し、カメラアプリケーションで[保存]をクリックすると、写真がサーバーにアップロードされるまでアプリケーションに戻りません。
これは、画像をアップロードしているスレッドを待っているためです。
この問題を解決する方法は?カメラアプリケーションからアプリケーションに戻したいのですが、プログレスバーを表示したいと思います。