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 ListView异步加载网络图片
  2. Android使用HttpURLConnection显示网络图片
  3. android 加载 网络图片
  4. Android 拖拽图片
  5. Android使用URLConnection显示网络图片
  6. android中异步加载图片信息
  7. android图片拖动

随机推荐

  1. Android ListView 滑动背景为黑色的解决
  2. 详解Android应用中使用TabHost组件进行布
  3. [置顶] 开发Android硬件抽象层模块接口
  4. Android(安卓)Application 在项目中的妙
  5. 我的Android使用openCV记录(1)
  6. 【Android(安卓)开发教程】数据共享
  7. Android(安卓)GPS
  8. android Binder机制深入浅出
  9. Android 之 Handler总结
  10. android开发之源码级分析(系统启动流程 &