我正在捕捉图像并将其设置为图像视图.
public void captureImage() {
Intent intentCamera = new Intent("android.media.action.IMAGE_CAPTURE");
File filePhoto = new File(Environment.getExternalStorageDirectory(), "Pic.jpg");
imageUri = Uri.fromFile(filePhoto);
MyApplicationGlobal.imageUri = imageUri.getPath();
intentCamera.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intentCamera, TAKE_PICTURE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intentFromCamera) {
super.onActivityResult(requestCode, resultCode, intentFromCamera);
if (resultCode == RESULT_OK && requestCode == TAKE_PICTURE) {
if (intentFromCamera != null) {
Bundle extras = intentFromCamera.getExtras();
if (extras.containsKey("data")) {
bitmap = (Bitmap) extras.get("data");
}
else {
bitmap = getBitmapFromUri();
}
}
else {
bitmap = getBitmapFromUri();
}
// …
Run Code Online (Sandbox Code Playgroud) 我们正在尝试使用原生相机应用程序让用户拍摄新照片.如果我们省略EXTRA_OUTPUT extra
并返回小的Bitmap图像,它就可以正常工作.但是,如果我们putExtra(EXTRA_OUTPUT,...)
在启动它之前处于意图状态,那么一切都会有效,直到您尝试点击相机应用程序中的"确定"按钮."确定"按钮无效.相机应用程序保持打开状态,没有任何锁定.我们可以取消它,但文件永远不会被写入.我们究竟要做什么ACTION_IMAGE_CAPTURE
才能将拍摄的照片写入文件?
编辑:这是通过MediaStore.ACTION_IMAGE_CAPTURE
意图完成的,只是为了清楚
camera android return-value android-intent android-camera-intent
我正在构建一个使用相机拍照的应用程序.这是我的源代码:
File file = new File(Environment.getExternalStorageDirectory(),
imageFileName);
imageFilePath = file.getPath();
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
//Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
startActivityForResult(intent, ACTIVITY_NATIVE_CAMERA_AQUIRE);
Run Code Online (Sandbox Code Playgroud)
在onActivityResult()
方法上,我BitmapFactory.decodeStream()
用来拾取图像.
当我在Nexus上运行我的应用程序时,它运行良好.但是当我在三星Galaxy S或HTC Inspire 4G上运行时,图像的方向是不正确的.
拍摄后的图像预览--------- SD卡上的真实图像
拍摄后的图像预览--------- SD卡上的真实图像
我需要将一个意图推送到默认的相机应用程序,使其拍摄照片,保存并返回URI.有没有办法做到这一点?
我正在尝试让我的应用程序为新的Android M权限更改做好准备,并发现了一些奇怪的行为.我的应用程序使用相机意图机制允许用户从相机获取图片.但是在另一个活动中需要使用具有Camera权限的摄像头本身(因为需要这个的库依赖card.io).
但是,当我尝试启动Camera意图时,只需要相机意图的活动中的M我看到以下崩溃(如果我从Manifest中删除了Camera权限,则不会发生这种情况),
> 09-25 21:57:55.260 774-8053/? I/ActivityManager: START u0
> {act=android.media.action.IMAGE_CAPTURE flg=0x3000003
> pkg=com.google.android.GoogleCamera
> cmp=com.google.android.GoogleCamera/com.android.camera.CaptureActivity
> (has clip) (has extras)} from uid 10098 on display 0 09-25
> 21:57:55.261 774-8053/? W/ActivityManager: Permission Denial: starting
> Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3000003
> pkg=com.google.android.GoogleCamera
> cmp=com.google.android.GoogleCamera/com.android.camera.CaptureActivity
> (has clip) (has extras) } from null (pid=-1, uid=10098) with revoked
> permission android.permission.CAMERA 09-25 21:57:55.263 32657-32657/?
> E/ResolverActivity: Unable to launch as uid 10098 package
> com.example.me.mycamerselectapp, while running in android:ui 09-25
> …
Run Code Online (Sandbox Code Playgroud) android android-camera android-camera-intent android-permissions android-6.0-marshmallow
我知道这有许多不同的方式,但我似乎无法从默认文件夹中删除图库图像.我正确地将文件保存到SD卡,我可以删除该文件,但在Camera文件夹下显示的默认图库文件不会删除.
我希望在返回活动后删除图像,因为文件已存储在SD卡下/Coupon2
.
有什么建议?
public void startCamera() {
Log.d("ANDRO_CAMERA", "Starting camera on the phone...");
mManufacturerText = (EditText) findViewById(R.id.manufacturer);
String ManufacturerText = mManufacturerText.getText().toString();
String currentDateTimeString = new Date().toString();
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File filedir = new File(Environment.getExternalStorageDirectory()+"/Coupon2");
filedir.mkdirs();
File file = new File(Environment.getExternalStorageDirectory()+"/Coupon2", ManufacturerText+"-test.png");
outputFileUri = Uri.fromFile(file);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(intent, CAMERA_PIC_REQUEST);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CAMERA_PIC_REQUEST && resultCode == -1) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.putExtra("crop", …
Run Code Online (Sandbox Code Playgroud) 我试图让用户在他的设备上选择他们想要的任何图像作为我正在构建的壁纸应用程序中的壁纸.出于某种原因,我写道:
Intent myIntent = new Intent(Intent.ACTION_PICK);
myIntent.setType("image/*");
startActivityForResult(myIntent, 100);
Run Code Online (Sandbox Code Playgroud)
我直接进入画廊,但是当我写道:
Intent myIntent = new Intent(Intent.ACTION_GET_CONTENT, null);
myIntent.setType("image/*");
startActivityForResult(myIntent, 100);
Run Code Online (Sandbox Code Playgroud)
我可以选择图库或Google云端硬盘.让用户选择每次检索图片的应用程序的最佳方法是什么?或者为什么这两个不同的意图常数有所不同?
我的应用程序允许用户按下按钮,打开相机,他们可以拍照,它将显示在图像视图中.如果用户在相机打开时按下或取消,我会关闭此强制 - 无法将结果ResultInfo {who = null,request = 1888,result = 0,data = null}发送到活动...所以我猜测结果= 0是我需要插入什么才能使此停止力关闭?
以下是我的代码.我知道我忘记了什么,但却无法弄清楚!(不可否认,我大约需要2周的时间学习android开发).谢谢你的帮助!
private static final int CAMERA_REQUEST = 1888;
private ImageView imageView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.imageView = (ImageView)this.findViewById(R.id.photostrippic1);
ImageView photoButton = (ImageView) this.findViewById(R.id.photostrippic1);
photoButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
}
});
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_REQUEST) {
Bitmap photo = (Bitmap) data.getExtras().get("data");
imageView.setImageBitmap(photo);
}
Run Code Online (Sandbox Code Playgroud)
我想我会在那里需要一个"其他",但我不知道这样做.
下面是logcat …
我一直试图获取捕获图像的路径以删除图像.在StackOverflow上找到了很多答案,但没有一个对我有用.我得到了以下答案:
private String getLastImagePath() {
final String[] imageColumns = { MediaStore.Images.Media._ID,
MediaStore.Images.Media.DATA };
final String imageOrderBy = MediaStore.Images.Media._ID + " DESC";
Cursor imageCursor = POS.this.getContentResolver().query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imageColumns,
null, null, imageOrderBy);
if (imageCursor.moveToFirst()) {
// int id = imageCursor.getInt(imageCursor
// .getColumnIndex(MediaStore.Images.Media._ID));
String fullPath = imageCursor.getString(imageCursor
.getColumnIndex(MediaStore.Images.Media.DATA));
return fullPath;
} else {
return "";
}
}
Run Code Online (Sandbox Code Playgroud)
此代码适用于Samsung选项卡,但在Lenovo选项卡和i-ball选项卡中不起作用.那么,任何人都可以帮我找到另一种解决方案吗?任何帮助将不胜感激.谢谢.
这是我的onActivityResult:
if (requestCode == CmsInter.CAMERA_REQUEST && resultCode == RESULT_OK) {
//Bitmap photo = null;
//photo = (Bitmap) data.getExtras().get("data");
String txt = "";
if (im != …
Run Code Online (Sandbox Code Playgroud) 我有两项活动(A1,A2).A1调用A2,从A2调用相机意图,如下所示
launchIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
launchIntent.putExtra(MediaStore.EXTRA_OUTPUT,photoPath);
startActivityForResult(launchIntent,CAMERA_REQUEST);
Run Code Online (Sandbox Code Playgroud)
它打开相机,我可以拍照.但是当我点击保存按钮(s3中的勾选按钮)时出现问题,我的onActivityResult没有被调用,而是调用了A2的onDestroy方法.我在onActivityResult fn中完成的逻辑很少.
我已经阅读了Stackoverflow中的一些关于此的帖子,但我无法从中得到有用的输出.我的第二个活动(A2)有我的清单
android:configChanges="keyboardHidden|orientation|locale"
android:screenOrientation="portrait
Run Code Online (Sandbox Code Playgroud)
注意:在HTC One X中我的onActivityResult fn被调用,但在我的S3中,第二个Activity(A2)被破坏了
Plz分享你对此的想法.提前致谢