android > 获取图片 从 本地 /相机
16lz
2022-03-19
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 =====================}
更多相关文章
- android:注册时的协议---》方法一:弹出框
- android mina 客户端无法接收信息的原因
- Android(安卓)BroadcastReceiver两种注册方式区别
- android 多个activity 共用一套广播时,写个父类封装广播接收
- Android(安卓)DrawBitmap绘制图像
- android中用socket 接收服务器的消息
- Android页面跳转是如何传递参数的
- Android(安卓)DrawBitmap绘制图像
- Unity 调用 Android(安卓)Native 方法(一) 获得Android系统音量