使用 Android Intent 调用相机应用程序并接收结果,无论它是否是定制的

发布于 2024-09-26 06:00:44 字数 1710 浏览 2 评论 0原文

问题是:我已经找到了这个问题的答案,到目前为止我已经使它适用于 htc 手机附带的自定义相机应用程序。

我有以下

 protected void onActivityResult(int requestCode, int resultCode, Intent data){

         if (requestCode == REQUEST_FROM_CAMERA && resultCode == RESULT_OK) {
                 InputStream is=null;

                 File file=mInterface.getTempFile();


                 try {
                     is=new FileInputStream(file);
                 } catch (FileNotFoundException e) {
                     e.printStackTrace();
                 }

                 if(is==null){
                     try {
                         u = data.getData();
                         is=getContentResolver().openInputStream(u);
                         mInterface.saveStringPreferences(GlobalInterface.URI_SAVENAME, u.toString());
                     } catch (FileNotFoundException e) {
                         e.printStackTrace();
                     }
                 }

                 //Now "is" stream contains the required photo, you can process it
                 setImage(is);

               }

//这是调用意图的函数的代码:

 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
     // intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(mInterface.getTempFile()));
      startActivityForResult(intent, REQUEST_FROM_CAMERA);

其余函数 getTempFile() 是在 /sdcard/blabla.tmp 上创建一个临时文件 以及在图像视图中设置捕获的图像的功能。

所以问题是我在 LG 手机上的自定义相机上测试了这段代码,它崩溃了。问题是:有没有办法获取图像位置的 uri(我不需要特定的保存位置,它可能是相机的默认设置)并且我还遇到了一些不需要解决的问题,例如获得较小分辨率的图像。我只需要一张图像,并能够将其设置在 imageView 中,以及适用于每个相机应用程序的方法,无论是自定义的还是本机的。

这是可能的还是我需要为此创建一个新的相机类?在我看来,手机附带的相机应用程序更适合手机型号,因此我更喜欢使用它们而不是构建自定义应用程序。

tnx。

here is the problem: i have searched for an answer for this and so far i made it work for the custom camera app that comes with htc phones.

i have the folowing

 protected void onActivityResult(int requestCode, int resultCode, Intent data){

         if (requestCode == REQUEST_FROM_CAMERA && resultCode == RESULT_OK) {
                 InputStream is=null;

                 File file=mInterface.getTempFile();


                 try {
                     is=new FileInputStream(file);
                 } catch (FileNotFoundException e) {
                     e.printStackTrace();
                 }

                 if(is==null){
                     try {
                         u = data.getData();
                         is=getContentResolver().openInputStream(u);
                         mInterface.saveStringPreferences(GlobalInterface.URI_SAVENAME, u.toString());
                     } catch (FileNotFoundException e) {
                         e.printStackTrace();
                     }
                 }

                 //Now "is" stream contains the required photo, you can process it
                 setImage(is);

               }

//and this is the code to the function that calls the intent:

 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
     // intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(mInterface.getTempFile()));
      startActivityForResult(intent, REQUEST_FROM_CAMERA);

the remaining functions getTempFile() is to create a temp file on /sdcard/blabla.tmp
and a function to set the captured image in an image view.

so the problem is that i tested this code on the custom camera on a lg phone and it crashes. the question is: is there a way to get an uri for the image location (i dont need a specific save location it could be the default set from the camera) and there were also some issues i came across which i dont need to solve like getting a smaller resolution image. i just need one image and to be able to set it in an imageView and the method to work for every camera app that is there, custom or native regardless.

is this possible or i need to create a new camera class for this? in my opinion the camera apps that come with the phone are more adjusted to the phone model so i would prefer using them against building a custom one.

tnx.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

感性不性感 2024-10-03 06:00:44

试试这个:

Bitmap thumbnail = (Bitmap) data.getExtras().get("data");  

来源

Try this:

Bitmap thumbnail = (Bitmap) data.getExtras().get("data");  

Source

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文