package edu.minggo.chat.ui; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import com.baidu.mobstat.StatService; import android.app.Activity; import android.app.Instrumentation; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import edu.minggo.chat.R; import edu.minggo.chat.adapters.MyGalleryAdapter; import edu.minggo.chat.control.BluetoothChatInterface; import edu.minggo.chat.control.BluetoothChatService; import edu.minggo.chat.database.DataBaseOperator; import edu.minggo.chat.model.MyPhoto; import edu.minggo.chat.model.Task; import edu.minggo.chat.util.BounceListView; import edu.minggo.chat.util.ClippingPicture; import edu.minggo.chat.util.OptionAlert; /** * �ҵ���� * @author minggo * @created 2013-2-6����12:48:47 */ public class MyGalleryActivity extends Activity implements BluetoothChatInterface{ public static final int GET_PHOTO_FROM_CARMERA = 0; public static final int SET_PHOTO_FROM_CARMERA = 3; public static final int GET_PHOTO_FROM_LOCAL = 1; public static final int SET_PHOTO_FROM_LOCAL = 2; private BounceListView mygalleryList; private MyGalleryAdapter listAdapter; private List<MyPhoto> photos; public static List<MyPhoto> photos1; private Button backButton; private ImageView takePhoto; private ImageView portraitiv; private TextView mymottotv; private TextView mynametv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mygallery); init(); } public static void simulateKey(final int keyCode){ new Thread(){ public void run(){ try { Instrumentation isn = new Instrumentation(); isn.sendKeyDownUpSync(keyCode); } catch (Exception e) { e.printStackTrace(); } } }.start(); } @Override public void init() { mygalleryList = (BounceListView)findViewById(R.id.mygallery_listview); backButton = (Button)findViewById(R.id.mygallery_bt_left); backButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { setResult(3, new Intent().putExtra("size", photos.size())); simulateKey(KeyEvent.KEYCODE_BACK); //finish(); } }); photos = new ArrayList<MyPhoto>(); photos = DataBaseOperator.quryPhotos(getApplicationContext()); if(photos.isEmpty()){ for(int i = 0; i<3;i++){ SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); System.out.println(df.format(new Date())); MyPhoto myPhoto = new MyPhoto(); myPhoto.setPhotoDes(i+""); myPhoto.setTime(df.format(new Date())); myPhoto.setUsername(BluetoothChatService.nowuser.getUsername()); photos.add(myPhoto); } }else{ /*for (int i = 0; i < photos.size(); i++) { photos.get(i).setMyphoto(BitmapFactory.decodeFile(photos.get(i).getPicPath())); }*/ } listAdapter = new MyGalleryAdapter(MyGalleryActivity.this.getApplicationContext(), photos); View listHead = LayoutInflater.from(this).inflate(R.layout.mygallery_list_head, null); View listFoot = LayoutInflater.from(this).inflate(R.layout.mygallery_list_foot, null); mymottotv = (TextView) listHead.findViewById(R.id.mygallery_tv_motto); portraitiv = (ImageView) listHead.findViewById(R.id.mygallery_iv_portrait); mynametv = (TextView) listHead.findViewById(R.id.mygallery_tv_myname); String myname = "δ��д"; if(BluetoothChatService.nowuser.getUsername()!=null) myname = BluetoothChatService.nowuser.getUsername(); mynametv.setText(myname); String motto = "δ��д"; if(BluetoothChatService.nowuser.getMotto()!=null) motto = BluetoothChatService.nowuser.getMotto(); mymottotv.setText(motto); if(BluetoothChatService.nowuser.getPhoto()!=null) portraitiv.setImageBitmap(BluetoothChatService.nowuser.getPhoto()); else portraitiv.setImageResource(R.drawable.default_avatar); takePhoto = (ImageView) listHead.findViewById(R.id.mygallery_iv_take_photo); takePhoto.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { OptionAlert.showAlert(MyGalleryActivity.this, MyGalleryActivity.this.getString(R.string.set_myinfo), MyGalleryActivity.this.getResources().getStringArray(R.array.set_myinfo_item), null, new OptionAlert.OnAlertSelectId(){ @Override public void onClick(int whichButton) { switch(whichButton){ case GET_PHOTO_FROM_LOCAL: Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); ((Activity) MyGalleryActivity.this).startActivityForResult(Intent.createChooser(intent, "Select Picture"),GET_PHOTO_FROM_LOCAL); break; case GET_PHOTO_FROM_CARMERA: Intent i = new Intent("android.media.action.IMAGE_CAPTURE"); ((Activity) MyGalleryActivity.this).startActivityForResult(i,GET_PHOTO_FROM_CARMERA); break; default: break; } } }); } }); mygalleryList.addFooterView(listFoot); mygalleryList.addHeaderView(listHead); mygalleryList.setSelectionAfterHeaderView();//Ч�����ó���û�� mygalleryList.setHeaderDividersEnabled(false);//Ч�����ó���Ҳû�� mygalleryList.setFooterDividersEnabled(false); mygalleryList.setAdapter(listAdapter); mygalleryList.setOnItemClickListener(new ListItemListener()); BluetoothChatService.allActivity.add(this); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case SET_PHOTO_FROM_CARMERA: if (data!=null&& data.getExtras().get("photo")!=null) { MyPhoto photo = (MyPhoto) data.getExtras().get("photo"); photo.setMyphoto((Bitmap)data.getExtras().get("bitmap")); MyGalleryAdapter.photos.add(0, photo); listAdapter.refresh(); } break; case SET_PHOTO_FROM_LOCAL: if (data!=null&& data.getExtras().get("photo")!=null) { MyPhoto photo = (MyPhoto) data.getExtras().get("photo"); photo.setMyphoto((Bitmap)data.getExtras().get("bitmap")); MyGalleryAdapter.photos.add(0, photo); listAdapter.refresh(); } break; case GET_PHOTO_FROM_LOCAL: // ����ȡͼƬ if (resultCode == Activity.RESULT_OK) { if (data!=null&& data.getData()!=null) { Map<String,Object> maps = ClippingPicture.saveGalleryPic(MyGalleryActivity.this, data.getData()); Intent it = new Intent(); it.putExtra("bitmap", (Bitmap)maps.get("bitmap")); it.putExtra("myphotoPath",(String)maps.get("galleryPicName") ); it.setClass(MyGalleryActivity.this, MyphotoAddActivity.class); MyGalleryActivity.this.startActivityForResult(it, SET_PHOTO_FROM_LOCAL); } } break; case GET_PHOTO_FROM_CARMERA://���� if (resultCode == Activity.RESULT_OK) { if (data!=null&&data.getExtras()!=null) { Bitmap bitmap = (Bitmap) data.getExtras().get("data"); bitmap = ClippingPicture.Resize(bitmap); ClippingPicture.saveGalleryPic(bitmap); Intent it = new Intent(); it.putExtra("bitmap", bitmap); it.putExtra("myphotoPath", ClippingPicture.saveGalleryPic(bitmap)); it.setClass(MyGalleryActivity.this, MyphotoAddActivity.class); MyGalleryActivity.this.startActivityForResult(it, SET_PHOTO_FROM_CARMERA); } } break; default: if (resultCode == Activity.RESULT_OK) { listAdapter.refresh(); } break; } } /** * ����б��ÿһ������� * @author minggo * @created 2013-2-6����01:12:58 */ public class ListItemListener implements OnItemClickListener{ @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if(position==0){ }else{ } } } @Override public void refresh(Object... param) { int i = (Integer)param[0]; if(i==Task.TASK_REFREAH_GALLERY){ System.out.println("+++++++++++++++++++++++++++++"); listAdapter.refresh(); } } @Override protected void onResume() { super.onResume(); StatService.onResume(this); } @Override protected void onPause() { super.onPause(); StatService.onPause(this); } }