【问题标题】:Extend android app扩展安卓应用
【发布时间】:2011-06-23 15:48:02
【问题描述】:

我想创建一个与默认相机应用程序相同的应用程序,只需稍作修改(即禁用视频或添加额外功能)。我该怎么做?

我只是获取相机应用程序的源代码并对其进行修改还是有办法扩展Android系统的核心组件?

【问题讨论】:

    标签: android components


    【解决方案1】:

    bizso99,

    您可以从您的Activity 调用Intent,这只是相机无视频功能,如下所示:

    public void imageFromCamera() {
        Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
        startActivityForResult(intent, TAKE_PICTURE);
    }
    

    这将返回图像的较小缩略图版本。如果你想要全尺寸,你需要像这样使用Mediastore.EXTRA_OUTPUT

    public void imageFromCamera() {
        Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
        mImageFile = new File(pathToStoreImage);  //file where image will be stored
        mSelectedImagePath = mImageFile.getAbsolutePath();  //path to file where image will be stored
        intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mImageFile));
        startActivityForResult(intent, TAKE_PICTURE);
    }
    

    然后就可以在onActivityResult()接收图片了

    【讨论】:

    • 我明白了,有没有一种方法可以在默认系统相机应用程序中添加新功能,同时保留所有现有功能,并将其作为一个名为“camera plus”的独立应用程序呈现?
    • 我不相信用这种方法可以完成,除非你打算只做后期图像处理。否则,您将不得不连接到相机并在您自己的 Canvas 对象上显示流,并使用 Camera Class 手动处理所有内容。
    【解决方案2】:

    Android 是开源的,因此您可以下载 android 中每个股票应用程序的源代码(不适用于地图等谷歌应用程序)。事实上,您可以从the android git repo 下载最新的原始相机应用程序。只有下载整个 android-source 才能构建 apk。有关如何构建 android-source 的概述,请参阅this howto。您可以根据需要修改源代码。

    我很确定在不复制源代码的情况下扩展相机应用程序是不可能的,因为相机 API 没有插件 API(或类似的)。

    【讨论】:

    • 实际上,您可以使用 apktool 修补二进制文件。对于不是适当的 SDK 应用程序的内置插件,因此只能在平台构建的上下文中编译,我有时发现这是值得的。如果我无法直接在 dalvik 代码中找出更改,我会得到一小块源代码,围绕更改适应在 sdk 下编译(通过存根私有函数等),然后将其用作指南/剪切-并粘贴源代码以修改 dalvik 代码。
    猜你喜欢
    • 2012-12-17
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    相关资源
    最近更新 更多