T3Activity.java

package t3.com;import java.io.File;import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.net.Uri;import android.os.Bundle;import android.os.SystemClock;import android.provider.MediaStore;import android.view.View;import android.widget.Button;import android.widget.ImageView;public class T3Activity extends Activity {    /** Called when the activity is first created. */private File sdcardTempFile;private int crop = 118;private ImageView imageView;private Button button1;private Button button2;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        imageView = (ImageView) findViewById(R.id.imageView);                sdcardTempFile = new File("/mnt/sdcard/", "tmp_pic_" + SystemClock.currentThreadTimeMillis() + ".jpg");         //=========================================================================                button1 = (Button)findViewById(R.id.button1);//from local        button1.setOnClickListener(new View.OnClickListener() {public void onClick(View v) { // TODO Auto-generated method stubIntent intent = new Intent("android.intent.action.PICK");intent.setDataAndType(MediaStore.Images.Media.INTERNAL_CONTENT_URI, "image/*");intent.putExtra("output", Uri.fromFile(sdcardTempFile));intent.putExtra("crop", "true");intent.putExtra("aspectX", 1);// 裁剪框比例intent.putExtra("aspectY", 1);intent.putExtra("outputX", crop);// 输出图片大小intent.putExtra("outputY", crop);startActivityForResult(intent, 100);}});                        //===================================================                button2 = (Button)findViewById(R.id.button2);//from camera        button2.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubIntent intent = new Intent("android.media.action.IMAGE_CAPTURE");intent.putExtra("output", Uri.fromFile(sdcardTempFile));intent.putExtra("crop", "true");intent.putExtra("aspectX", 1);// 裁剪框比例intent.putExtra("aspectY", 1);intent.putExtra("outputX", crop);// 输出图片大小intent.putExtra("outputY", crop);startActivityForResult(intent, 101); }});                            }    @Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent intent) {if (resultCode == RESULT_OK) {Bitmap bmp = BitmapFactory.decodeFile(sdcardTempFile.getAbsolutePath());imageView.setImageBitmap(bmp);}}//\\}

main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <ImageView         android:id="@+id/imageView"        android:layout_width="wrap_content"        android:layout_height="wrap_content"                />    <Button        android:id="@+id/button1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="from local" />    <Button        android:id="@+id/button2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="from camera" /></LinearLayout>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="t3.com"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk android:minSdkVersion="8" />    <application        android:icon="@drawable/ic_launcher"        android:label="@string/app_name" >        <activity            android:name=".T3Activity"            android:theme="@android:style/Theme.Black.NoTitleBar"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application>    <uses-permission android:name="android.permission.CAMERA"/><uses-feature android:name="android.hardware.camera" /><uses-feature android:name="android.hardware.camera.autofocus" /></manifest>

** 解决 某些手机在 从相机获取图片 做 裁剪的时候 报错 。

思路: 先 拍照 然后 做接收 然后 在做 裁剪 Crop 然后 再 做 接收。 但是 图片 路径最好 提前 final

package login.mft;import java.io.File;import java.util.ArrayList;import java.util.HashMap;import contrl.mft.ContrlInfo;import tab.mft.TabIndex;import udp.mft.UdpConn;import gloabal.mft.BitmapUtils;import home.mft.R;import android.app.Activity; import android.content.Context;import android.content.Intent;import android.content.SharedPreferences;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;import android.net.Uri;import android.os.Bundle;import android.os.SystemClock;import android.provider.MediaStore;import android.util.Log;import android.view.KeyEvent;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.GridView;import android.widget.ImageButton;import android.widget.ImageView;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.Toast;public class LoginChPic extends Activity{private GridView gridview;  private String[] picArray = new String[30];private int picCount = 6;//pic CountSharedPreferences sp;private String SYS_NAME = "bdl_switch_sys";private ImageButton getLocal;private ImageButton getCamera;private ImageButton back;private static File sdcardTempFile;      private static int crop = 118;        private int jumpId = 1;        ////// dif ////////////    private final String getIconName = "tmp_pic_" + SystemClock.currentThreadTimeMillis() + ".jpg";    //\\\\ dif \\\\\\\\\\\\\\\\    private String loginResut;private String localIp;private String DeviceIp;private String DeviceMac;private String pwd;private String DevicePort;    @Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.login_pic);gridview = (GridView)findViewById(R.id.gridview);getLocal = (ImageButton)findViewById(R.id.from_local);getCamera = (ImageButton)findViewById(R.id.from_camera);back = (ImageButton)findViewById(R.id.back);//Intent intent = getIntent(); DeviceMac = intent.getStringExtra("DeviceMac"); jumpId = Integer.parseInt(intent.getStringExtra("jumpId"));if(jumpId == 2){loginResut = intent.getStringExtra("loginResut");localIp = intent.getStringExtra("localIp");DeviceIp = intent.getStringExtra("DeviceIp"); pwd = intent.getStringExtra("pwd"); DevicePort = intent.getStringExtra("DevicePort"); }//\\        sp = getSharedPreferences(SYS_NAME, 0);          ////----- from local camara  start        sdcardTempFile = new File("/mnt/sdcard/bdl_switch/sys_icon", getIconName);           //=========================================================================           //from local          getLocal.setOnClickListener(new View.OnClickListener() {                            public void onClick(View v) {                   // TODO Auto-generated method stub                  Intent intent = new Intent("android.intent.action.PICK");                  intent.setDataAndType(MediaStore.Images.Media.INTERNAL_CONTENT_URI, "image/*");                                  intent.putExtra("crop", "true");                  intent.putExtra("aspectX", 1);// 裁剪框比例                  intent.putExtra("aspectY", 1);                  intent.putExtra("outputX", crop);// 输出图片大小                  intent.putExtra("outputY", crop);                  intent.putExtra("output", Uri.fromFile(sdcardTempFile));                  startActivityForResult(intent, 100);                              }          });                              //===================================================          //from camera          getCamera.setOnClickListener(new View.OnClickListener() {                            public void onClick(View v) {                  // TODO Auto-generated method stub                  Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");                  intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(sdcardTempFile));                              startActivityForResult(intent, 101);               }          });                  ////----- from local camara  end        for (int i = 1; i <= picCount; i++) { picArray[i] = "p"+i+".png";}ArrayList<HashMap<String, String>> listItem = new ArrayList<HashMap<String, String>>();for(int i=1;i<= picCount;i++){              HashMap<String, String> map = new HashMap<String, String>();              map.put("data",picArray[i]);              listItem.add(map);      }  LoginChPicList listItemAdapter = new LoginChPicList(LoginChPic.this, listItem);                 gridview.setAdapter(listItemAdapter);    gridview.setOnItemClickListener(new ItemClickListener());   //\\    onKeyDown(0,null);          back.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubforceBack();}});    }class ItemClickListener implements OnItemClickListener{           public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,                   long arg3) {               // TODO Auto-generated method stub               HashMap<String, Object> item=(HashMap<String, Object>) arg0.getItemAtPosition(arg2);                           SharedPreferences.Editor editor = sp.edit();      editor.putString(DeviceMac+"_icon", picArray[(arg2+1)]);     editor.putString(DeviceMac+"_icon_fl", "1");     editor.commit();           LoginChPic.this.finish();           Intent intent = new Intent();   switch (jumpId) {   case 1:   intent.setClass(LoginChPic.this, TabIndex.class);   break;   case 2:Bundle band = new Bundle();band.putString("loginResut", loginResut);band.putString("localIp", localIp);band.putString("DeviceIp", DeviceIp);band.putString("DeviceMac", DeviceMac);band.putString("pwd", pwd);band.putString("DevicePort", DevicePort);intent.putExtras(band);       intent.setClass(LoginChPic.this, ContrlInfo.class);   break;   default:   intent.setClass(LoginChPic.this, TabIndex.class);   break;   }           LoginChPic.this.startActivity(intent);             }              } public void forceBack(){       LoginChPic.this.finish();       Intent intent = new Intent();   switch (jumpId) {   case 1:            SharedPreferences.Editor editor = sp.edit();      editor.putString(DeviceMac+"_icon", "p3.png");     editor.putString(DeviceMac+"_icon_fl", "1");     editor.commit();       intent.setClass(LoginChPic.this, TabIndex.class);   break;   case 2:Bundle band = new Bundle();band.putString("loginResut", loginResut);band.putString("localIp", localIp);band.putString("DeviceIp", DeviceIp);band.putString("DeviceMac", DeviceMac);band.putString("pwd", pwd);band.putString("DevicePort", DevicePort);intent.putExtras(band);       intent.setClass(LoginChPic.this, ContrlInfo.class);   break;   default:   intent.setClass(LoginChPic.this, TabIndex.class);   break;   }       LoginChPic.this.startActivity(intent);              }public boolean onKeyDown(int keyCode, KeyEvent event) {           // TODO Auto-generated method stub            if(keyCode == KeyEvent.KEYCODE_BACK){          //Toast.makeText(LoginChPic.this, "请点击界面上的返回按钮", Toast.LENGTH_LONG).show();         forceBack();              return true;          }           return super.onKeyDown(keyCode, event);       }  //\\@Override      protected void onActivityResult(int requestCode, int resultCode, Intent intent) {  /////// 接收后 先 做 裁剪Crop 然后才 写  图片路径到 文件中        if (resultCode == RESULT_OK) {          if(requestCode == 101){        Log.d("log","do");        doCropPhoto(Uri.fromFile(sdcardTempFile));        }                if(requestCode == 3021 || requestCode == 100){                SharedPreferences.Editor editor = sp.edit();          editor.putString(DeviceMac+"_icon", getIconName);         editor.putString(DeviceMac+"_icon_fl", "0");         editor.commit();                                  LoginChPic.this.finish();               Intent intent1 = new Intent();       switch (jumpId) {       case 1:       intent1.setClass(LoginChPic.this, TabIndex.class);       break;       case 2:    Bundle band = new Bundle();    band.putString("loginResut", loginResut);    band.putString("localIp", localIp);    band.putString("DeviceIp", DeviceIp);    band.putString("DeviceMac", DeviceMac);    band.putString("pwd", pwd);    band.putString("DevicePort", DevicePort);    intent1.putExtras(band);            intent1.setClass(LoginChPic.this, ContrlInfo.class);       break;       default:       intent1.setClass(LoginChPic.this, TabIndex.class);       break;       }                              LoginChPic.this.startActivity(intent1);                }                    }      }// 做 裁剪  Crop  ----------------protected void doCropPhoto(Uri uri) {        Intent intent = getCropImageIntent(uri);        startActivityForResult(intent, 3021);    }public static Intent getCropImageIntent(Uri uri) {        Intent intent = new Intent("com.android.camera.action.CROP");        intent.setDataAndType(uri, "image/*");        intent.putExtra("crop", "true");        intent.putExtra("aspectX", 1);        intent.putExtra("aspectY", 1);        intent.putExtra("outputX", crop);        intent.putExtra("outputY", crop);        intent.putExtra("output", Uri.fromFile(sdcardTempFile));        return intent;    }// 做 裁剪  Crop  =====================}       

更多相关文章

  1. android:注册时的协议---》方法一:弹出框
  2. android mina 客户端无法接收信息的原因
  3. Android(安卓)BroadcastReceiver两种注册方式区别
  4. android 多个activity 共用一套广播时,写个父类封装广播接收
  5. Android(安卓)DrawBitmap绘制图像
  6. android中用socket 接收服务器的消息
  7. Android页面跳转是如何传递参数的
  8. Android(安卓)DrawBitmap绘制图像
  9. Unity 调用 Android(安卓)Native 方法(一) 获得Android系统音量

随机推荐

  1. Linux下性能压测之系统参数调优
  2. 5.0 Ansible 组织Playbook角色
  3. DevOps与传统的融合落地实践及案例分享
  4. Vue.js 基础入门系列(一)环境搭建
  5. 驱动器中的磁盘未被格式化. 不知道怎样寻
  6. Vue.js基础入门系列(二)数据绑定
  7. 中科三方:自签名的SSL证书与购买的专业SSL
  8. mysql数据库题目
  9. 智汇华云 | ArcherOS Stack共享存储虚拟
  10. Affinity Photo能代替PS的修图神器