我们正在尝试使用原生相机应用程序让用户拍摄新照片.如果我们省略EXTRA_OUTPUT extra并返回小的Bitmap图像,它就可以正常工作.但是,如果我们putExtra(EXTRA_OUTPUT,...)在启动它之前处于意图状态,那么一切都会有效,直到您尝试点击相机应用程序中的"确定"按钮."确定"按钮无效.相机应用程序保持打开状态,没有任何锁定.我们可以取消它,但文件永远不会被写入.我们究竟要做什么ACTION_IMAGE_CAPTURE才能将拍摄的照片写入文件?
编辑:这是通过MediaStore.ACTION_IMAGE_CAPTURE意图完成的,只是为了清楚
camera android return-value android-intent android-camera-intent
我知道这有许多不同的方式,但我似乎无法从默认文件夹中删除图库图像.我正确地将文件保存到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) 很简单.这三者有什么区别?
我想列出设备中的每个图像.我应该使用managedQuery(),android.provider.MediaStore.Images.Media.query()还是context.getContentResolver.query()
环境(Linux/Eclipse Dev for Xoom Tablet运行HoneyComb 3.0.1)
在我的应用程序中,我正在使用相机(startIntentForResult())来拍照.拍摄照片后,我得到了onActivityResult()回调,并且能够使用通过"拍照"意图传递的Uri加载位图.此时我的活动已恢复,尝试将图像重新加载到图库时出错:
FATAL EXCEPTION: main
ERROR/AndroidRuntime(4148): java.lang.RuntimeException: Unable to resume activity {...}:
java.lang.IllegalStateException: trying to requery an already closed cursor
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2243)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1019)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:126)
at android.app.ActivityThread.main(ActivityThread.java:3997)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:491)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: trying to requery an already closed cursor
at android.app.Activity.performRestart(Activity.java:4337)
at android.app.Activity.performResume(Activity.java:4360)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2205)
... 10 more
Run Code Online (Sandbox Code Playgroud)
我正在使用的唯一光标逻辑是在拍摄图像后,我使用以下逻辑将Uri转换为文件
String [] projection = {
MediaStore.Images.Media._ID,
MediaStore.Images.ImageColumns.ORIENTATION,
MediaStore.Images.Media.DATA
};
Cursor cursor = activity.managedQuery( …Run Code Online (Sandbox Code Playgroud) 我的Android应用有问题.我正MediaStore.ACTION_IMAGE_CAPTURE打算用相机拍照.它适用于大多数设备,但我在Android市场上的DroidX设备上遇到了以下崩溃错误.
我认为imageCaptureUri在这种情况下不能为空.所以这不是原因.
你有什么想法?这是固件错误吗?
java.lang.NullPointerException位于com.eb.android.activity.Add活动的com.eb.android.activity.AddActivity.getBase64Receipt(AddActivity.java:193)的android.content.ContentResolver.openInputStream(ContentResolver.java:286).发布Receipt(AddActivity.java:204)at com.eb.android.activity.AddActivity.access $ 0(AddActivity.java:203)at com.eb.android.activity.AddActivity $ 1.run(AddActivity.java:50)at java .lang.Thread.run(Thread.java:1102)
java.lang.NullPointerException位于com.eb.android.activity.Add活动的com.eb.android.activity.AddActivity.getBase64Receipt(AddActivity.java:193)的android.content.ContentResolver.openInputStream(ContentResolver.java:288).发布Receipt(AddActivity.java:204)at com.eb.android.activity.AddActivity.access $ 0(AddActivity.java:203)at com.eb.android.activity.AddActivity $ 1.run(AddActivity.java:50)at java .lang.Thread.run(Thread.java:1096)
这是我的实施:
public class AddActivity extends Activity {
public static final int TAKE_RECEIPT = 2;
private Uri imageCaptureUri;
private Runnable submitReceiptRunnable = new Runnable() {
public void run() {
publishReceipt();
}
};
private ProgressDialog progressDialog;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add);
registerListeners();
}
public void onActivityResult(int reqCode, int resultCode, Intent data) {
super.onActivityResult(reqCode, resultCode, …Run Code Online (Sandbox Code Playgroud) 因此,当我拍照时,它们会被保存到DCIM/Camera /目录中.我需要在通过电子邮件发送后检索图片.
我怎样才能得到最后一张照片的名字?(或调整我当前的代码以自定义文件名.)
这是拍照的代码:
function capturePhoto(id) {
navigator.camera.getPicture(onSuccess, onFail, { quality: 20,
destinationType: Camera.DestinationType.FILE_URI });
function onSuccess(imageURI) {
var image = document.getElementById(id);
image.style.display = 'block';
image.src = imageURI;
}
function onFail(message) {
alert('Failed because: ' + message);
}
}
Run Code Online (Sandbox Code Playgroud) 我的应用程序使用手机相机拍照并将图片存储在手机图库中.我想获得该图片路径并将其存储在我的数据存储区中.有人可以帮帮我吗?继承我的代码:
public void onClick(View v){
switch(v.getId())
{
case R.id.btnLoadPic:
//Options for the dialogue menu
final CharSequence[] items = {"Camera", "Gallery"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Choose an Option");
builder.setItems(items, new DialogInterface.OnClickListener() {
/**
* Make onclick functionality for the options in the dialogue menu
*/
public void onClick(DialogInterface dialog, int item) {
// Camera option
if (item == 0){
PackageManager pm = getPackageManager();
if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)){
//Toast.makeText(this, "camera", Toast.LENGTH_SHORT).show();
dispatchTakePictureIntent(11);
} else {
Toast.makeText(null, "No camera avalible", Toast.LENGTH_SHORT).show();
}
}
// …Run Code Online (Sandbox Code Playgroud) 我使用Android 2.1,我想从相机意图结果获得真正的路径.我从ACTION_IMAGE_CAPTURE Intent读取了Get Path of image,但是它适用于android 2.2.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == CAMERA_RESULT)
{
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
imv.setImageBitmap(thumbnail);
Uri selectedImageUri = data.getData();
String path = getRealPathFromURI(selectedImageUri);
}
}
private String getRealPathFromURI(Uri contentUri)
{
try
{
String[] proj = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(contentUri, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
catch (Exception e)
{
return contentUri.getPath();
}
}
Run Code Online (Sandbox Code Playgroud)