안드로이드 개발 질문/답변
(글 수 45,052)
----------------
| |
| |
| |
| |
________________
사진촬영
사진앨범보기
위와같이 구성을 하였는데요
사진촬영을 클릭하면
카메라로 사진을 찍고
sdcard에 저장을 시켰습니다.
사진앨범보기를 선택하면
에뮬에 잇는 gallery리로 접근을 합니다.
ㅁ(사진) ㅁ(사진) ㅁ(사진)
ㅁ ㅁ ㅁ
위와같이 겔러리 사진리스트들이 보입니다.
문제는 요기서
사진을 선택을 했을때.. 에뮬레이터 겔러리에서처럼 사진이 확대가 되야하는데
확대가 안되네요;;;
제 생각에는 겔러리로 넘겨주엇으면 겔러리 어플처럼 겔러리 기능을 사용하지 못하는것 같습니다 유.,유;;
제 어플에 어떤식으로 선택된 값에대한 처리를 해주어야 하는지 궁금합니다...
------------------------------ 로그캣 에러
INFO/ActivityManager(52): Starting activity: Intent { act=android.intent.action.GET_CONTENT typ=image/* cmp=com.android.gallery/com.android.camera.ImageGallery }
: INFO/ActivityManager(52): Displayed activity com.android.gallery/com.android.camera.ImageGallery: 742 ms (total 742 ms)
: DEBUG/CameraService(31): stopPreview (pid 20743)
.: DEBUG/CameraService(31): stopPreview(), hardware stopped OK
.: DEBUG/dalvikvm(106): GC freed 179 objects / 7840 bytes in 89ms
.: WARN/KeyCharacterMap(12117): No keyboard for id 0
.: WARN/KeyCharacterMap(12117): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
.: DEBUG/CameraService(31): CameraService::connect E (pid 20743, client 0xde38)
.: DEBUG/CameraService(31): CameraService::connect X (pid 20743, new client 0xde38) rejected. (old pid 20743, old client 0xdf80)
.: DEBUG/AndroidRuntime(20743): Shutting down VM
.: WARN/dalvikvm(20743): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
.: ERROR/AndroidRuntime(20743): Uncaught handler: thread main exiting due to uncaught exception
.: ERROR/AndroidRuntime(20743): java.lang.RuntimeException: Fail to connect to camera service
.: ERROR/AndroidRuntime(20743): at android.hardware.Camera.native_setup(Native Method)
.: ERROR/AndroidRuntime(20743): at android.hardware.Camera.<init>(Camera.java:110)
.: ERROR/AndroidRuntime(20743): at android.hardware.Camera.open(Camera.java:90)
.: ERROR/AndroidRuntime(20743): at com.example.Preview.surfaceCreated(Preview.java:36)
.: ERROR/AndroidRuntime(20743): at android.view.SurfaceView.updateWindow(SurfaceView.java:454)
: ERROR/AndroidRuntime(20743): at android.view.SurfaceView.onWindowVisibilityChanged(SurfaceView.java:189)
: ERROR/AndroidRuntime(20743): at android.view.View.dispatchWindowVisibilityChanged(View.java:3782)
: ERROR/AndroidRuntime(20743): at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:692)
: ERROR/AndroidRuntime(20743): at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:692)
: ERROR/AndroidRuntime(20743): at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:692)
: ERROR/AndroidRuntime(20743): at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:692)
: ERROR/AndroidRuntime(20743): at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:692)
: ERROR/AndroidRuntime(20743): at android.view.ViewRoot.performTraversals(ViewRoot.java:706)
: ERROR/AndroidRuntime(20743): at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
: ERROR/AndroidRuntime(20743): at android.os.Handler.dispatchMessage(Handler.java:99)
ERROR/AndroidRuntime(20743): at android.os.Looper.loop(Looper.java:123)
: ERROR/AndroidRuntime(20743): at android.app.ActivityThread.main(ActivityThread.java:4363)
: ERROR/AndroidRuntime(20743): at java.lang.reflect.Method.invokeNative(Native Method)
: ERROR/AndroidRuntime(20743): at java.lang.reflect.Method.invoke(Method.java:521)
: ERROR/AndroidRuntime(20743): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
: ERROR/AndroidRuntime(20743): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
ERROR/AndroidRuntime(20743): at dalvik.system.NativeStart.main(Native Method)
---------------------------------------------------------------------------------------------------------------
요건 버튼 눌럿을시 겔러리로 보내는 엑션지정한 저의 소스입니다
buttonGallery = (Button) findViewById(R.id.buttonGallery);
buttonGallery.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setAction( Intent.ACTION_GET_CONTENT );
intent.setType( "image/*" );
startActivityForResult( intent, REQ_IMAGE_SELECT );
}
});
--------------------------------------------------------------------
^^;;;
또 이해가 안가는게
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
try {
Uri selPhotoUri = data.getData();
Bitmap selPhoto = Images.Media.getBitmap( getContentResolver(), selPhotoUri );
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
이렇게 forResult로 인텐트 넘겨줬으니깐 다시 엑티비티 복귀할때
이런식으로 구현한다면 이미지 선택된거를 보여줄수있다는데요...
이렇게 된다면
------------
| |
| 프리뷰 |
| |
____________
사진촬영
사진앨범
----------------------------------- 요기서 받아온값을 어떤 이미지 뷰라던지 그곳에다 넣어야할것 같은
느낌은 오는데요.. 참 헷갈리네요;;; 아구야..
현재 제카메라 구현어플은
샘플카메라.java
프리뷰.java
이렇게만 있구요
layout은 main.xml 이렇게만 잇습니다.
-------------------------------------------------------------------
그리고 궁금한게 또 있는데요..
지금 저의 메인 엑티비티에서
에뮬에 등록된 겔러리에다가 인텐트넘겨줘서
에뮬에서 이용하는 갤러리를 이용하잖아요
근데 어떻게 갤러리 에뮬에잇는 선택된 이미지값을 알수가 있는건가요??
제가 제어하는 엑티비티가 아닌데 말이죠??
근데 이렇게 성공하셨다는 글을 봐서 저도 따라해봤습니다만... 잘 안되네요 유.,유
재야의 숨은 고수님들 조언을 부탁드립니다... ㅠㅠ
| |
| |
| |
| |
________________
사진촬영
사진앨범보기
위와같이 구성을 하였는데요
사진촬영을 클릭하면
카메라로 사진을 찍고
sdcard에 저장을 시켰습니다.
사진앨범보기를 선택하면
에뮬에 잇는 gallery리로 접근을 합니다.
ㅁ(사진) ㅁ(사진) ㅁ(사진)
ㅁ ㅁ ㅁ
위와같이 겔러리 사진리스트들이 보입니다.
문제는 요기서
사진을 선택을 했을때.. 에뮬레이터 겔러리에서처럼 사진이 확대가 되야하는데
확대가 안되네요;;;
제 생각에는 겔러리로 넘겨주엇으면 겔러리 어플처럼 겔러리 기능을 사용하지 못하는것 같습니다 유.,유;;
제 어플에 어떤식으로 선택된 값에대한 처리를 해주어야 하는지 궁금합니다...
------------------------------ 로그캣 에러
INFO/ActivityManager(52): Starting activity: Intent { act=android.intent.action.GET_CONTENT typ=image/* cmp=com.android.gallery/com.android.camera.ImageGallery }
: INFO/ActivityManager(52): Displayed activity com.android.gallery/com.android.camera.ImageGallery: 742 ms (total 742 ms)
: DEBUG/CameraService(31): stopPreview (pid 20743)
.: DEBUG/CameraService(31): stopPreview(), hardware stopped OK
.: DEBUG/dalvikvm(106): GC freed 179 objects / 7840 bytes in 89ms
.: WARN/KeyCharacterMap(12117): No keyboard for id 0
.: WARN/KeyCharacterMap(12117): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
.: DEBUG/CameraService(31): CameraService::connect E (pid 20743, client 0xde38)
.: DEBUG/CameraService(31): CameraService::connect X (pid 20743, new client 0xde38) rejected. (old pid 20743, old client 0xdf80)
.: DEBUG/AndroidRuntime(20743): Shutting down VM
.: WARN/dalvikvm(20743): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
.: ERROR/AndroidRuntime(20743): Uncaught handler: thread main exiting due to uncaught exception
.: ERROR/AndroidRuntime(20743): java.lang.RuntimeException: Fail to connect to camera service
.: ERROR/AndroidRuntime(20743): at android.hardware.Camera.native_setup(Native Method)
.: ERROR/AndroidRuntime(20743): at android.hardware.Camera.<init>(Camera.java:110)
.: ERROR/AndroidRuntime(20743): at android.hardware.Camera.open(Camera.java:90)
.: ERROR/AndroidRuntime(20743): at com.example.Preview.surfaceCreated(Preview.java:36)
.: ERROR/AndroidRuntime(20743): at android.view.SurfaceView.updateWindow(SurfaceView.java:454)
: ERROR/AndroidRuntime(20743): at android.view.SurfaceView.onWindowVisibilityChanged(SurfaceView.java:189)
: ERROR/AndroidRuntime(20743): at android.view.View.dispatchWindowVisibilityChanged(View.java:3782)
: ERROR/AndroidRuntime(20743): at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:692)
: ERROR/AndroidRuntime(20743): at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:692)
: ERROR/AndroidRuntime(20743): at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:692)
: ERROR/AndroidRuntime(20743): at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:692)
: ERROR/AndroidRuntime(20743): at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:692)
: ERROR/AndroidRuntime(20743): at android.view.ViewRoot.performTraversals(ViewRoot.java:706)
: ERROR/AndroidRuntime(20743): at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
: ERROR/AndroidRuntime(20743): at android.os.Handler.dispatchMessage(Handler.java:99)
ERROR/AndroidRuntime(20743): at android.os.Looper.loop(Looper.java:123)
: ERROR/AndroidRuntime(20743): at android.app.ActivityThread.main(ActivityThread.java:4363)
: ERROR/AndroidRuntime(20743): at java.lang.reflect.Method.invokeNative(Native Method)
: ERROR/AndroidRuntime(20743): at java.lang.reflect.Method.invoke(Method.java:521)
: ERROR/AndroidRuntime(20743): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
: ERROR/AndroidRuntime(20743): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
ERROR/AndroidRuntime(20743): at dalvik.system.NativeStart.main(Native Method)
---------------------------------------------------------------------------------------------------------------
요건 버튼 눌럿을시 겔러리로 보내는 엑션지정한 저의 소스입니다
buttonGallery = (Button) findViewById(R.id.buttonGallery);
buttonGallery.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setAction( Intent.ACTION_GET_CONTENT );
intent.setType( "image/*" );
startActivityForResult( intent, REQ_IMAGE_SELECT );
}
});
--------------------------------------------------------------------
^^;;;
또 이해가 안가는게
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
try {
Uri selPhotoUri = data.getData();
Bitmap selPhoto = Images.Media.getBitmap( getContentResolver(), selPhotoUri );
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
이렇게 forResult로 인텐트 넘겨줬으니깐 다시 엑티비티 복귀할때
이런식으로 구현한다면 이미지 선택된거를 보여줄수있다는데요...
이렇게 된다면
------------
| |
| 프리뷰 |
| |
____________
사진촬영
사진앨범
----------------------------------- 요기서 받아온값을 어떤 이미지 뷰라던지 그곳에다 넣어야할것 같은
느낌은 오는데요.. 참 헷갈리네요;;; 아구야..
현재 제카메라 구현어플은
샘플카메라.java
프리뷰.java
이렇게만 있구요
layout은 main.xml 이렇게만 잇습니다.
-------------------------------------------------------------------
그리고 궁금한게 또 있는데요..
지금 저의 메인 엑티비티에서
에뮬에 등록된 겔러리에다가 인텐트넘겨줘서
에뮬에서 이용하는 갤러리를 이용하잖아요
근데 어떻게 갤러리 에뮬에잇는 선택된 이미지값을 알수가 있는건가요??
제가 제어하는 엑티비티가 아닌데 말이죠??
근데 이렇게 성공하셨다는 글을 봐서 저도 따라해봤습니다만... 잘 안되네요 유.,유
재야의 숨은 고수님들 조언을 부탁드립니다... ㅠㅠ

2010.06.18 13:38:46
님 질문속에 답이 있네요.
위의 소스에서 보면 내장 갤러리를 띄우기 위해 startActivityForResult()를 호출하기 때문에
내장갤러리에서 사진을 선택하면 이전 액티비티(갤러리를 띄운 화면) 로 복귀하면서 선택된 이미지가 같이 넘어오는 거죠.
그 처리를 하는 메소드가 onActivityResult() 이구요
위의 소스에서 보면 onActivityResult() 내에서
Bitmap selPhoto = Images.Media.getBitmap( getContentResolver(), selPhotoUri );
이렇게 갤러리에서 선택한 이미지를 받아오네요.
이렇게 받은 이미지를 적절한 작업 후에 화면에 보여주면 되는데요.
프리뷰 부분을 이미지뷰로 만들고 여기에 보여주려면
imgView.setImageBitmap(selPhoto);
이런식으로 보여주면 되겠네요.