android拍照和上传的实现代码
2023-06-13 09:15:05 时间
importjava.io.ByteArrayOutputStream;
importjava.io.File;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.graphics.Bitmap;
importandroid.net.Uri;
importandroid.os.Bundle;
importandroid.os.Environment;
importandroid.provider.MediaStore;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.ImageView;
publicclassPhotoActivityextendsActivity{
publicstaticfinalintNONE=0;
publicstaticfinalintPHOTOHRAPH=1;//拍照
publicstaticfinalintPHOTOZOOM=2;//缩放
publicstaticfinalintPHOTORESOULT=3;//结果
publicstaticfinalStringIMAGE_UNSPECIFIED="image/*";
ImageViewimageView=null;
Buttonbutton0=null;
Buttonbutton1=null;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.photo);
imageView=(ImageView)findViewById(R.id.imageID);
button0=(Button)findViewById(R.id.btn_01);
button1=(Button)findViewById(R.id.btn_02);
button0.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
Intentintent=newIntent(Intent.ACTION_PICK,null);
intent.setDataAndType(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
IMAGE_UNSPECIFIED);
startActivityForResult(intent,PHOTOZOOM);
}
});
button1.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
Intentintent=newIntent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(newFile(
Environment.getExternalStorageDirectory(),"temp.jpg")));
startActivityForResult(intent,PHOTOHRAPH);
}
});
}
@Override
protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){
if(resultCode==NONE)
return;
//拍照
if(requestCode==PHOTOHRAPH){
//设置文件保存路径这里放在跟目录下
Filepicture=newFile(Environment.getExternalStorageDirectory()
+"/temp.jpg");
startPhotoZoom(Uri.fromFile(picture));
}
if(data==null)
return;
//读取相册缩放图片
if(requestCode==PHOTOZOOM){
startPhotoZoom(data.getData());
}
//处理结果
if(requestCode==PHOTORESOULT){
Bundleextras=data.getExtras();
if(extras!=null){
Bitmapphoto=extras.getParcelable("data");
ByteArrayOutputStreamstream=newByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.JPEG,75,stream);//(0-
//100)压缩文件
imageView.setImageBitmap(photo);
}
}
super.onActivityResult(requestCode,resultCode,data);
}
publicvoidstartPhotoZoom(Uriuri){
Intentintent=newIntent("com.android.camera.action.CROP");
intent.setDataAndType(uri,IMAGE_UNSPECIFIED);
intent.putExtra("crop","true");
//aspectXaspectY是宽高的比例
intent.putExtra("aspectX",1);
intent.putExtra("aspectY",1);
//outputXoutputY是裁剪图片宽�?
intent.putExtra("outputX",64);
intent.putExtra("outputY",64);
intent.putExtra("return-data",true);
startActivityForResult(intent,PHOTORESOULT);
}
}
相关文章
- android 常用加密,分享一下Android各种类型的加密
- android activity自动跳转,Android activity跳转之finish()方法的作用
- android签名命令行,Android系统签名位置及命令
- android开发笔记之 Android代码混淆打包
- android退出app代码,Android应用退出代码各种方式
- android 定时器重置,Android定时器延迟和重置[通俗易懂]
- Android游戏引擎_巨星引擎网络公司
- Android平台GB28181设备接入端预置位查询(PresetQuery)探讨和技术实现
- 【Android RTMP】音频数据采集编码 ( FAAC 编码器编码 AAC 音频采样数据 | 封装 RTMP 音频数据头 | 设置 AAC 音频数据类型 | 封装 RTMP 数据包 )
- 【Android Protobuf 序列化】Protobuf 使用 ( Protobuf 序列化 | Protobuf 反序列化 )
- 【Android 逆向】Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )
- 【Android Gradle 插件】Gradle 映射文件 ( settings.gradle 映射为 Settings 类 | build.gradle 映射为 Project 类 )
- 【ijkplayer】编译 Android 版本的 ijkplayer ⑤ ( 执行 init-android-libyuv.sh | 执行 init-android-soundtouch.sh )
- 【错误记录】Android 应用安全检测漏洞修复 ( StrandHogg 漏洞 | 设置 Activity 组件 android:taskAffinity=““ )
- Android仿京东、天猫商品详情页详解手机开发
- Connecting Android to Oracle: The Ultimate Guide for Seamless Integration.(android连接oracle)
- android用java和c实现查找sd卡挂载路径(sd卡路径)的方法
- Android入门简单实例
- Android显式启动与隐式启动Activity的区别介绍