我想定一段代码,在一个界面 中有一个ImageView但是有两个ImageButton,一个负责打开文件寻找Sd卡中图片并把它显示在ImageView中。如果没有合格图片用户可以调用照像机照像将照片放在ImageView中显示,请教各位大虾们程序该如何写。
附上我写的一段代码,它老报The application has stopped unexception
package com.tmxk;import java.io.FileNotFoundException;import com.yarin.android.FileManager.FileManager;import android.app.Activity;
import android.content.ContentResolver;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;public class second extends Activity{
/** Called when the activity is first created. */
public String location;
private ImageButton btn1;
private ImageButton btn2;
private ImageButton btn3;
private ImageButton btn4;
private ImageButton btn5;
private EditText edt;
private EditText edt1;
private ImageView img1;
static int b=0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = getIntent();
location =intent.getStringExtra("location");
findview();
btn1.setOnClickListener(new MyButtonListener());//打开gallay文件
btn2.setOnClickListener(new MyButton2Listener());//照像打开照像机
}
public void findview(){
btn1 = (ImageButton) findViewById(R.id.btn1);
btn2 = (ImageButton) findViewById(R.id.btn2);
btn3 = (ImageButton) findViewById(R.id.btn3);
btn4 = (ImageButton) findViewById(R.id.btn4);
btn5 = (ImageButton) findViewById(R.id.btn5);
edt = (EditText) findViewById(R.id.edt0);
edt1 =(EditText) findViewById(R.id.edt1);
img1 = (ImageView) findViewById(R.id.img1);
}
class MyButtonListener implements OnClickListener {
@Override
public void onClick (View v)
{
//TODO Auto-generated method stub
Intent intent = new Intent();
/* 开启Pictures画面Type设定为image */
intent.setType("image/*");
/* 使用Intent.ACTION_GET_CONTENT这个Action */
intent.setAction(Intent.ACTION_GET_CONTENT);
/* 取得相片后返回本画面 */
startActivityForResult(intent, 1);
b=1;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
Uri uri = data.getData();
Log.e("uri", uri.toString());
ContentResolver cr = this.getContentResolver();
try {
Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri));
//ImageView imageView = (ImageView) findViewById(R.id.img1);
/* 将Bitmap设定到ImageView */
img1.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
Log.e("Exception", e.getMessage(),e);
}
}
super.onActivityResult(requestCode, resultCode, data);
}
class MyButton2Listener implements OnClickListener {
@Override
public void onClick (View v)
{
//TODO Auto-generated method stub
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
/* 开启Pictures画面Type设定为image */
startActivityForResult(intent, 1);
b=1;
}
}
//@Override
protected void onActivityResult1(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
Bundle bundle = data.getExtras();
Bitmap bitmap = (Bitmap) bundle.get("data");// 获取相机返回的数据,并转换为Bitmap图片格式
img1.setImageBitmap(bitmap);
} }
附上我写的一段代码,它老报The application has stopped unexception
package com.tmxk;import java.io.FileNotFoundException;import com.yarin.android.FileManager.FileManager;import android.app.Activity;
import android.content.ContentResolver;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;public class second extends Activity{
/** Called when the activity is first created. */
public String location;
private ImageButton btn1;
private ImageButton btn2;
private ImageButton btn3;
private ImageButton btn4;
private ImageButton btn5;
private EditText edt;
private EditText edt1;
private ImageView img1;
static int b=0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = getIntent();
location =intent.getStringExtra("location");
findview();
btn1.setOnClickListener(new MyButtonListener());//打开gallay文件
btn2.setOnClickListener(new MyButton2Listener());//照像打开照像机
}
public void findview(){
btn1 = (ImageButton) findViewById(R.id.btn1);
btn2 = (ImageButton) findViewById(R.id.btn2);
btn3 = (ImageButton) findViewById(R.id.btn3);
btn4 = (ImageButton) findViewById(R.id.btn4);
btn5 = (ImageButton) findViewById(R.id.btn5);
edt = (EditText) findViewById(R.id.edt0);
edt1 =(EditText) findViewById(R.id.edt1);
img1 = (ImageView) findViewById(R.id.img1);
}
class MyButtonListener implements OnClickListener {
@Override
public void onClick (View v)
{
//TODO Auto-generated method stub
Intent intent = new Intent();
/* 开启Pictures画面Type设定为image */
intent.setType("image/*");
/* 使用Intent.ACTION_GET_CONTENT这个Action */
intent.setAction(Intent.ACTION_GET_CONTENT);
/* 取得相片后返回本画面 */
startActivityForResult(intent, 1);
b=1;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
Uri uri = data.getData();
Log.e("uri", uri.toString());
ContentResolver cr = this.getContentResolver();
try {
Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri));
//ImageView imageView = (ImageView) findViewById(R.id.img1);
/* 将Bitmap设定到ImageView */
img1.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
Log.e("Exception", e.getMessage(),e);
}
}
super.onActivityResult(requestCode, resultCode, data);
}
class MyButton2Listener implements OnClickListener {
@Override
public void onClick (View v)
{
//TODO Auto-generated method stub
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
/* 开启Pictures画面Type设定为image */
startActivityForResult(intent, 1);
b=1;
}
}
//@Override
protected void onActivityResult1(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
Bundle bundle = data.getExtras();
Bitmap bitmap = (Bitmap) bundle.get("data");// 获取相机返回的数据,并转换为Bitmap图片格式
img1.setImageBitmap(bitmap);
} }
解决方案 »
- vlc android编译成功,但 播放不了rtsp
- 明明类型是对的,为什么会出现java.lang.ClassCastException,怎么破?
- 学android开发需要购买硬件吗?比如买个平板电脑?
- Android系统桌面的短信图标获取 并做一定修改
- android 手机音量
- ArrayAdapter的运用问题 在线等
- AndroidTalk启动时,出现 "recognizer not present".
- 继承Toast,使用自定义布局,在三星9250上怎么弄都不能全屏,求高手指教
- android opengl,touch 二维坐标怎么转换成三维坐标
- 在view中的点击事件如何实现跳转activity或者View类
- android开发入门的疑惑,求点击!!!
- 有人把Glib库移植到Android上吗?
05-11 10:36:12.263: INFO/ActivityManager(52): Displayed activity com.tmxk/.second: 450 ms (total 450 ms)
05-11 10:36:15.682: INFO/ActivityManager(52): Starting activity: Intent { act=android.media.action.IMAGE_CAPTURE cmp=com.android.camera/.Camera }
05-11 10:36:15.772: INFO/ActivityManager(52): Start proc com.android.camera for activity com.android.camera/.Camera: pid=206 uid=10003 gids={1015, 1006, 2001, 3003}
05-11 10:36:15.912: DEBUG/ddm-heap(206): Got feature list request
05-11 10:36:16.042: INFO/WindowManager(52): Setting rotation to 1, animFlags=0
05-11 10:36:16.462: INFO/ActivityManager(52): Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/2 nav=3/1 orien=2 layout=18}
05-11 10:36:17.082: DEBUG/CameraService(31): CameraService::connect E (pid 206, client 0xd338)
05-11 10:36:17.082: DEBUG/CameraService(31): Client::Client E (pid 206)
05-11 10:36:17.082: DEBUG/CameraHardwareStub(31): initHeapLocked: preview size=176x144
05-11 10:36:17.172: ERROR/MediaPlayerService(31): error: -2
05-11 10:36:17.172: ERROR/MediaPlayer(31): Unable to to create media player
05-11 10:36:17.172: ERROR/CameraService(31): Failed to load CameraService sounds.
05-11 10:36:17.172: ERROR/MediaPlayerService(31): error: -2
05-11 10:36:17.182: ERROR/MediaPlayer(31): Unable to to create media player
05-11 10:36:17.182: ERROR/CameraService(31): Failed to load CameraService sounds.
05-11 10:36:17.182: DEBUG/CameraService(31): Client::Client X (pid 206)
05-11 10:36:17.182: DEBUG/CameraService(31): CameraService::connect X
05-11 10:36:17.182: DEBUG/CameraService(31): getParameters(picture-format=jpeg;picture-size=213x350;preview-format=yuv422sp;preview-frame-rate=15;preview-size=176x144)
05-11 10:36:17.182: DEBUG/CameraService(31): getParameters(picture-format=jpeg;picture-size=213x350;preview-format=yuv422sp;preview-frame-rate=15;preview-size=176x144)
05-11 10:36:17.192: DEBUG/Camera(206): app passed NULL surface
05-11 10:36:17.192: DEBUG/CameraService(31): setPreviewDisplay(0x0) (pid 206)
05-11 10:36:17.192: DEBUG/CameraService(31): getParameters(picture-format=jpeg;picture-size=213x350;preview-format=yuv422sp;preview-frame-rate=15;preview-size=176x144)
05-11 10:36:17.202: DEBUG/CameraService(31): setParameters(preview-size=176x144;preview-format=yuv422sp;jpeg-quality=85;picture-size=213x350;picture-format=jpeg;preview-frame-rate=15)
05-11 10:36:17.202: DEBUG/CameraHardwareStub(31): initHeapLocked: preview size=176x144
05-11 10:36:17.212: VERBOSE/camera(206): startPreview
05-11 10:36:17.212: DEBUG/CameraService(31): startPreview (pid 206)
05-11 10:36:17.212: DEBUG/CameraService(31): startCameraMode(0) (pid 206)
05-11 10:36:17.212: DEBUG/CameraService(31): mSurface is not set yet.
05-11 10:36:17.212: DEBUG/CameraService(31): startPreviewMode (pid 206)
05-11 10:36:17.262: DEBUG/Camera-JNI(206): dataCallback(16, 0x112b30)
05-11 10:36:17.323: VERBOSE/camera(206): Got first frame
05-11 10:36:17.522: WARN/IInputConnectionWrapper(200): showStatusIcon on inactive InputConnection
05-11 10:36:17.732: DEBUG/CameraService(31): setPreviewDisplay(0x1b930) (pid 206)
05-11 10:36:17.772: INFO/ActivityManager(52): Displayed activity com.android.camera/.Camera: 2018 ms (total 2018 ms)
05-11 10:36:17.792: INFO/ARMAssembler(52): generated scanline__00000077:03010104_00000009_00000000 [ 28 ipp] (47 ins) at [0x3bf030:0x3bf0ec] in 944722 ns
05-11 10:36:17.912: DEBUG/qemud(35): fdhandler_accept_event: accepting on fd 10
05-11 10:36:17.922: DEBUG/qemud(35): created client 0x150b8 listening on fd 15
05-11 10:36:17.922: DEBUG/qemud(35): client_fd_receive: attempting registration for service 'sensors'
05-11 10:36:17.922: DEBUG/qemud(35): client_fd_receive: -> received channel id 8
05-11 10:36:18.022: DEBUG/qemud(35): client_registration: registration succeeded for client 8
05-11 10:36:18.033: DEBUG/SensorManager(206): found sensor: Goldfish 3-axis Accelerometer, handle=0
05-11 10:36:18.033: DEBUG/qemud(35): fdhandler_event: disconnect on fd 15
05-11 10:36:18.062: DEBUG/LocationManager(206): Constructor: service = android.location.ILocationManager$Stub$Proxy@44df3778
05-11 10:36:19.412: VERBOSE/camera(206): Start autofocus.
05-11 10:36:19.462: DEBUG/CameraService(31): autoFocus (pid 206)
05-11 10:36:19.472: VERBOSE/camera(206): doSnap: mFocusState=1
05-11 10:36:19.582: VERBOSE/camera(206): mAutoFocusTime = 152ms
05-11 10:36:19.582: VERBOSE/camera(206): mLastOrientation = -1, orientation = 0
05-11 10:36:19.602: DEBUG/CameraService(31): setParameters(preview-size=176x144;preview-format=yuv422sp;jpeg-quality=85;picture-size=213x350;rotation=0;picture-format=jpeg;preview-frame-rate=15)
05-11 10:36:19.602: DEBUG/CameraHardwareStub(31): initHeapLocked: preview size=176x144
05-11 10:36:19.612: DEBUG/CameraService(31): takePicture (pid 206)
05-11 10:36:19.772: VERBOSE/camera(206): mShutterLag = 184ms
05-11 10:36:19.922: DEBUG/Camera-JNI(206): dataCallback(256, 0x2d0d18)
05-11 10:36:20.042: DEBUG/dalvikvm(52): GC freed 13895 objects / 655088 bytes in 255ms
05-11 10:36:20.072: VERBOSE/camera(206): mShutterToRawCallbackTime = 299ms
05-11 10:36:20.072: VERBOSE/camera(206): mPictureDisplayedToJpegCallbackTime = 6ms
05-11 10:36:21.272: DEBUG/CameraService(31): stopPreview (pid 206)
05-11 10:36:21.272: DEBUG/CameraService(31): stopPreview(), hardware stopped OK
05-11 10:36:21.292: DEBUG/Camera-JNI(206): release camera
05-11 10:36:21.292: DEBUG/CameraService(31): Client::disconnect() E (pid 206 client 0xd338)
05-11 10:36:21.292: DEBUG/CameraService(31): hardware teardown
05-11 10:36:21.292: DEBUG/CameraService(31): removeClient (pid 206) done
05-11 10:36:21.292: DEBUG/CameraService(31): Client::disconnect() X (pid 206)
05-11 10:36:21.302: DEBUG/CameraService(31): Client::~Client E (pid 31, client 0xd338)
05-11 10:36:21.312: DEBUG/LocationManager(206): removeUpdates: listener = com.android.camera.Camera$LocationListener@44dca6d0
05-11 10:36:21.322: DEBUG/CameraService(31): Client::disconnect() E (pid 31 client 0xd338)
05-11 10:36:21.322: DEBUG/CameraService(31): Client::~Client X (pid 31)
05-11 10:36:21.322: DEBUG/LocationManager(206): removeUpdates: listener = com.android.camera.Camera$LocationListener@44dca7d0
05-11 10:36:21.332: INFO/WindowManager(52): Setting rotation to 0, animFlags=0
05-11 10:36:21.462: INFO/ActivityManager(52): Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/2 nav=3/1 orien=1 layout=18}
05-11 10:36:21.722: DEBUG/AndroidRuntime(200): Shutting down VM
05-11 10:36:21.762: WARN/dalvikvm(200): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
05-11 10:36:21.762: ERROR/AndroidRuntime(200): Uncaught handler: thread main exiting due to uncaught exception
05-11 10:36:21.852: ERROR/AndroidRuntime(200): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { act=inline-data (has extras) }} to activity {com.tmxk/com.tmxk.second}: java.lang.NullPointerException
05-11 10:36:21.852: ERROR/AndroidRuntime(200): at android.app.ActivityThread.deliverResults(ActivityThread.java:3329)
05-11 10:36:21.852: ERROR/AndroidRuntime(200): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3371)
05-11 10:36:21.852: ERROR/AndroidRuntime(200): at android.app.ActivityThread.access$2700(ActivityThread.java:119)
05-11 10:36:21.852: ERROR/AndroidRuntime(200): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1893)
05-11 10:36:21.852: ERROR/AndroidRuntime(200): at android.os.Handler.dispatchMessage(Handler.java:99)
05-11 10:36:21.852: ERROR/AndroidRuntime(200): at android.os.Looper.loop(Looper.java:123)
05-11 10:36:21.852: ERROR/AndroidRuntime(200): at android.app.ActivityThread.main(ActivityThread.java:4363)
05-11 10:36:21.852: ERROR/AndroidRuntime(200): at java.lang.reflect.Method.invokeNative(Native Method)
05-11 10:36:21.852: ERROR/AndroidRuntime(200): at java.lang.reflect.Method.invoke(Method.java:521)
05-11 10:36:21.852: ERROR/AndroidRuntime(200): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
05-11 10:36:21.852: ERROR/AndroidRuntime(200): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
05-11 10:36:21.852: ERROR/AndroidRuntime(200): at dalvik.system.NativeStart.main(Native Method)
05-11 10:36:21.852: ERROR/AndroidRuntime(200): Caused by: java.lang.NullPointerException
05-11 10:36:21.852: ERROR/AndroidRuntime(200): at com.tmxk.second.onActivityResult(second.java:74)
05-11 10:36:21.852: ERROR/AndroidRuntime(200): at android.app.Activity.dispatchActivityResult(Activity.java:3828)
05-11 10:36:21.852: ERROR/AndroidRuntime(200): at android.app.ActivityThread.deliverResults(ActivityThread.java:3325)
05-11 10:36:21.852: ERROR/AndroidRuntime(200): ... 11 more
05-11 10:36:21.962: INFO/Process(52): Sending signal. PID: 200 SIG: 3
05-11 10:36:21.975: INFO/dalvikvm(200): threadid=7: reacting to signal 3
05-11 10:36:22.042: INFO/dalvikvm(200): Wrote stack trace to '/data/anr/traces.txt'
05-11 10:36:23.843: DEBUG/dalvikvm(52): GC freed 1706 objects / 79424 bytes in 128ms
05-11 10:36:23.912: INFO/Process(200): Sending signal. PID: 200 SIG: 9
05-11 10:36:23.942: INFO/WindowManager(52): WIN DEATH: Window{44e185a8 com.tmxk/com.tmxk.second paused=false}
05-11 10:36:23.952: INFO/ActivityManager(52): Process com.tmxk (pid 200) has died.
05-11 10:36:23.972: INFO/UsageStats(52): Unexpected resume of com.android.launcher while already resumed in com.tmxk
05-11 10:36:24.172: WARN/IInputConnectionWrapper(206): showStatusIcon on inactive InputConnection
at com.tmxk.second.onActivityResult(second.java:74)
也就是在second.java这个文件的第74行。位于onActivityResult里面,也就是返回时未获得数据。
我也调用过摄像程序拍照
我的方法是,调用时,传参告诉摄像程序,文件要存储在内存卡中的哪个路径
然后,如果摄像程序返回结果是拍摄成功的话
根据前面的那个路径,从内存卡中的文件载入图像
我之前有遇到一个问题,
就是返回结果,那个data的值为null
我猜楼主也是这个问题,这个断点调试一下就知道了