我有一个相当简单的应用程序,从菜单启动相机.相机发射很好,但是当我拍完照片后拍到OK时,我的nexus上有一个NPE:
E/AndroidRuntime( 3891): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=null} to activity {net.asplode.tr/net.asplode.tr.PostImage}: java.lang.NullPointerException
E/AndroidRuntime( 3891): at android.app.ActivityThread.deliverResults(ActivityThread.java:3515)
E/AndroidRuntime( 3891): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3557)
E/AndroidRuntime( 3891): at android.app.ActivityThread.access$2800(ActivityThread.java:125)
E/AndroidRuntime( 3891): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2063)
E/AndroidRuntime( 3891): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 3891): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 3891): at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime( 3891): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 3891): at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime( 3891): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime( 3891): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/AndroidRuntime( 3891): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 3891): Caused by: java.lang.NullPointerException
E/AndroidRuntime( 3891): at net.asplode.tr.PostImage.onActivityResult(PostImage.java:92)
E/AndroidRuntime( 3891): at android.app.Activity.dispatchActivityResult(Activity.java:3890)
E/AndroidRuntime( 3891): …Run Code Online (Sandbox Code Playgroud) 我在我的Android应用程序上尝试相机预览.当我试用我的真实设备时,它会给我黑屏.
这是我的代码,它不会抛出任何错误,但屏幕仍然是黑色的.有任何想法吗?
import android.app.Activity;
import android.content.Context;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.widget.FrameLayout;
public class ARrazerNav extends Activity{
public void onCreate(Bundle savedInstanceState){
try{
super.onCreate(savedInstanceState);
CustomCameraView cv = new CustomCameraView(this.getApplicationContext());
FrameLayout r1 = new FrameLayout(this.getApplicationContext());
setContentView(r1);
r1.addView(r1);
}catch (Exception e) {
// TODO: handle exception
}
}
public class CustomCameraView extends SurfaceView{
Camera camera;
SurfaceHolder previewHolder;
public CustomCameraView(Context ctx){
super(ctx);
previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
previewHolder.addCallback(surfaceHolderListener);
}
SurfaceHolder.Callback surfaceHolderListener = new SurfaceHolder.Callback(){
public void surfaceDestroyed(SurfaceHolder holder) {
// …Run Code Online (Sandbox Code Playgroud) 像标题说我的问题涉及相机拍摄的图像uri.Uri总是空的...为什么?
@Override
public void onClick(View v) {
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, TAKE_PICTURE);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if (requestCode == TAKE_PICTURE)
{
//Uri contentURI = Uri.parse(data.getDataString());
thumbnail = (Bitmap) data.getExtras().get("data");
ImageView image = (ImageView) findViewById(R.id.photoResultView);
image.setImageBitmap(thumbnail);
photoUri = data.getData();
Log.e("FOTOLOG",""+ photoUri);
}
}
Run Code Online (Sandbox Code Playgroud) 我一直试图解决这个问题,但没有取得任何成功.
我有一个非常简单的应用程序,可以捕获图像并将该图像显示给用户.问题是它在捕获日期时保存图像,但我想给图像一个特定的名称.
这是我的代码:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.imageView = (ImageView)this.findViewById(R.id.imageView1);
Button photoButton = (Button) this.findViewById(R.id.button1);
photoButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
//intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(intent, CAMERA_REQUEST);
}
});
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
System.gc();
if (requestCode == CAMERA_REQUEST) {
Bitmap photo = (Bitmap) data.getExtras().get("data");
imageView.setImageBitmap(photo);
}
}
Run Code Online (Sandbox Code Playgroud)
如果有人能告诉我需要添加的内容以及设置图像名称的位置,我将非常感激.
我使用以下代码启动相机,但是,3/4的时间,照片无法保存到内存中.这只发生在Galaxy SIII上.它适用于Nexus S和Nexus One
public void photoNew() {
holdingImage = getContentResolver().insert(MUtil.genImgUri(), new ContentValues());
Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Bundle extras = new Bundle();
extras.putParcelable(MediaStore.EXTRA_OUTPUT, holdingImage);
extras.putBoolean("return-data", true);
i.putExtras(extras);
startActivityForResult(i, REQ_PHOTO);
}
Run Code Online (Sandbox Code Playgroud) 我有一个应用程序调用Android手机的默认相机拍照,以下是我的代码.
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, TAKE_PICTURE);
Run Code Online (Sandbox Code Playgroud)
在onActivityResult方法中,我正在执行以下操作
if ((requestCode == TAKE_PICTURE) && (resultCode == Activity.RESULT_OK)) {
Uri photoPath = intent.getData();
// do something with the uri here
}
Run Code Online (Sandbox Code Playgroud)
以上代码在htc Tatto和索尼爱立信x10运行1.6上工作正常但在htc G1上运行1.6以上代码导致以下异常
03-08 18:54:25.906: ERROR/AndroidRuntime(4344): Uncaught handler: thread main exiting due to uncaught exception
03-08 18:54:25.966: ERROR/AndroidRuntime(4344): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { act=inline-data (has extras) }} to activity removed
java.lang.NullPointerException
03-08 18:54:25.966: ERROR/AndroidRuntime(4344): at android.app.ActivityThread.deliverResults(ActivityThread.java:3224)
03-08 18:54:25.966: ERROR/AndroidRuntime(4344): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3266)
03-08 18:54:25.966: ERROR/AndroidRuntime(4344): at android.app.ActivityThread.access$2600(ActivityThread.java:116) …Run Code Online (Sandbox Code Playgroud) 我想用相机拍摄图像并将其保存到图片文件夹中...我唯一无法解决的问题是为什么我的图像以小尺寸保存...
Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(i, TAKE_PICTURE);
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturned) {
super.onActivityResult(requestCode, resultCode, imageReturned);
switch(requestCode) {
case TAKE_PICTURE:
if(resultCode == RESULT_OK)
{
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.PNG, 100, bytes);
File f = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)+ File.separator + "test3.png");
try {
f.createNewFile();
//write the bytes in file
FileOutputStream fo = new FileOutputStream(f);
fo.write(bytes.toByteArray());
fo.flush();
// remember close de FileOutput
fo.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)