/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android.ui.widget; import WriteReviewOperation.MediaRef; import android.app.Dialog; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.widget.Toast; import com.galaxy.meetup.client.android.R; import com.galaxy.meetup.client.android.Intents; import com.galaxy.meetup.client.android.content.AudienceData; import com.galaxy.meetup.client.android.content.EsAccount; import com.galaxy.meetup.client.android.service.EsService; import com.galaxy.meetup.client.android.service.EsServiceListener; import com.galaxy.meetup.client.android.service.ServiceResult; import com.galaxy.meetup.client.util.ImageUtils; /** * * @author sihai * */ public class EsWidgetCameraLauncherActivity extends FragmentActivity { private Integer mInsertCameraPhotoRequestId; private EsServiceListener mServiceListener; public EsWidgetCameraLauncherActivity() { mServiceListener = new EsServiceListener() { public final void onInsertCameraPhotoComplete(int i, ServiceResult serviceresult) { if(mInsertCameraPhotoRequestId != null && mInsertCameraPhotoRequestId.intValue() == i) { insertCameraPhoto(EsService.getLastCameraMediaLocation()); mInsertCameraPhotoRequestId = null; } } }; } private void insertCameraPhoto(String s) { if(s != null) { Intent intent = Intents.getPostActivityIntent(this, null, new MediaRef(null, 0L, null, Uri.parse(s), MediaRef.MediaType.IMAGE)); intent.removeExtra("account"); Intent intent1 = getIntent(); if(intent1.hasExtra("audience")) intent.putExtra("audience", (AudienceData)intent1.getParcelableExtra("audience")); startActivity(intent); } else { Toast.makeText(this, getString(R.string.camera_photo_error), 1).show(); } dismissDialog(0x7f0a003e); finish(); } public void onActivityResult(int i, int j, Intent intent) { if(1 == i) { if(j == -1) { showDialog(0x7f0a003e); mInsertCameraPhotoRequestId = EsService.insertCameraPhoto(this, (EsAccount)getIntent().getParcelableExtra("account"), "camera-p.jpg"); } else { finish(); } } } public void onCreate(Bundle bundle) { super.onCreate(bundle); if(bundle != null) { if(bundle.containsKey("insert_camera_photo_req_id")) mInsertCameraPhotoRequestId = Integer.valueOf(bundle.getInt("insert_camera_photo_req_id")); } else { startActivityForResult(Intents.getCameraIntentPhoto("camera-p.jpg"), 1); } } public Dialog onCreateDialog(int i, Bundle bundle) { Dialog dialog; if(i == 0x7f0a003e) dialog = ImageUtils.createInsertCameraPhotoDialog(this); else dialog = super.onCreateDialog(i, bundle); return dialog; } public void onPause() { super.onPause(); EsService.unregisterListener(mServiceListener); } public void onResume() { super.onResume(); EsService.registerListener(mServiceListener); if(mInsertCameraPhotoRequestId != null && !EsService.isRequestPending(mInsertCameraPhotoRequestId.intValue())) { EsService.removeResult(mInsertCameraPhotoRequestId.intValue()); insertCameraPhoto(EsService.getLastCameraMediaLocation()); mInsertCameraPhotoRequestId = null; } } public void onSaveInstanceState(Bundle bundle) { super.onSaveInstanceState(bundle); if(mInsertCameraPhotoRequestId != null) bundle.putInt("insert_camera_photo_req_id", mInsertCameraPhotoRequestId.intValue()); } }