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 stub Intent 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 stub Intent 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); } }); } @Override protected 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 Count SharedPreferences 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; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.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 stub forceBack(); } }); } 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 studio 开发,使用FileProvider兼容4.4版本以上文件权限读取。适配常见手机文件系统路径。
1.android获取本地图片; 2.android系统照相机,拍照保存,获取图片。
1.android获取本地图片; 2.android调用系统照相机。
android eclipse 项目 通过拍照获取图片,保存本地 读取本地画廊的图片
demo为仿微信朋友圈发动态的功能,实现从相机拍照和相册(相册为自己实现且支持同时选取多张图片)选取图片显示和删除并保存到本地SD卡操作(保存到本地的是高清的压缩图片小于100KB 分辨率1280*720 可以直接上传到...
实现炫酷的获取本地图片和相机拍照图片-自定义组件
主要介绍了android获取相册图片和路径的实现方法,本文介绍的是Android4.4后的方法,感兴趣的小伙伴们可以参考一下
在安卓应用开发中经常会用到调用系统相机拍照跟获取本地图片功能,下面就是对这一常用功能的简单实现Demo!
主要为大家详细介绍了Android自定义组件获取本地图片和相机拍照图片的相关资料,非常炫酷的效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
从本地图库获取图片和拍照获取图片,通过获取本地所有图片地址,展示所有图片让用户选择,最多选择5张,还可以调用系统相机拍照
需求:从本地相册找图片,或通过调用系统相机拍照得到图片。 容易出错的地方: 1、当我们指定了照片的uri路径,我们就不能通过data.getData();来获取uri,而应该直接拿到uri(用全局变量或者其他方式)然后设置给...
一个封装好的拍照和从本地相册中选取图片,看demo中的用法即可。使你的应用更加简便
通过调用本地的相册或相机获取相对应的图片URL 并放入List中备用或上传
实现从相机拍照和相册选取图片显示并保存到本地SD卡操作Demo,避免了Bitmap导致的内存溢出
对于如何获取头像照片,可以通过使用本地相册或者拍照获取,而是用原生的相机功能都会或多或少遇到一些问题,因此特地封装了相机和相册功能,使用简单,方便,只需要简单的几行代码就可以获取图片。
对于拍摄照片我们可以直接调用系统自带的相机拍照,一般情况下无需我们自己开发相机拍照。 1、当点击按钮后我们可以通过Intent意图启动系统相机 ...<uses-permission android:name="android.permission.CAMERA"/>
通过js调用android接口启动照相机拍照,成功后将图片上传
* 1、实现原理:用户打开相册或相机选择相片后,相片经过压缩并设置在控件上,图片在本地sd卡存一份(如果有的话,没有则内部存储,所以还 * 需要判断用户是否挂载了sd卡),然后在服务器上存储一份该图片,当下次再次启动...
该android工程展现了最简单的调用相机和相册的过程。 1.调用默认相机进行拍照、裁剪、本地存储和展现。 2.获取本地图片资源进行裁剪、本地存储和展现。
(1)通过获取本地相册的图片,经过裁剪后作为头像。 (2)通过启动手机相机,现拍图片然后裁剪作为...(2)调用Android系统中自带的图片剪裁,实现图片的剪裁并在onActivityResult方法中获取数据。 本次演示效果如下