web-dev-qa-db-ja.com

Microsoft Lensをアプリケーションに統合できますか?

私は Office Lens の画像を自動的にトリミング、フォーカス、整列する機能が好きです...主に領収書と経費の処理のために

次のようなアプリフローが必要です。

  1. ユーザーが私のアプリを開き、写真の領収書をクリックします
  2. レンズが開きます(Androidインテント、またはiOSの同様のもの)
  3. ユーザーが写真を撮る
  4. 画像は処理のためにアプリケーションに返されます

そのフローを実現し、カメラとアプリ間のデータ転送(写真)をシームレスにするのに問題があります。どのようなオプションがありますか?

30

Androidmanifest.xmlファイルを見ると、次のXMLが表示されます。

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android" package="com.Microsoft.office.officelens" platformBuildVersionCode="21" platformBuildVersionName="5.0.1-1624448">
    <uses-permission Android:name="Android.permission.CAMERA" Android:required="true"/>
    <uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission Android:name="Android.permission.GET_ACCOUNTS"/>
    <uses-permission Android:name="Android.permission.INTERNET"/>
    <uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission Android:name="Android.permission.AUTHENTICATE_ACCOUNTS"/>
    <uses-permission Android:name="Android.permission.ACCESS_DOWNLOAD_MANAGER"/>
    <uses-permission Android:name="Android.permission.DOWNLOAD_WITHOUT_NOTIFICATION"/>
    <uses-permission Android:name="Android.permission.READ_CONTACTS"/>
    <uses-permission Android:name="Android.permission.READ_PROFILE"/>
    <uses-permission Android:name="Android.permission.READ_PHONE_STATE"/>
    <uses-permission Android:name="Android.permission.RECEIVE_SMS"/>
    <uses-feature Android:name="Android.hardware.camera" Android:required="true"/>
    <uses-feature Android:name="Android.hardware.camera.autofocus" Android:required="false"/>
    <application Android:allowBackup="true" Android:icon="@drawable/ic_officelens" Android:label="@string/officelens_app_name" Android:largeHeap="true" Android:name="com.Microsoft.office.officelens.OfficeLensApplication" Android:theme="@style/OfficeLensAppTheme">
        <activity Android:label="@string/officelens_app_name" Android:name="com.Microsoft.office.apphost.LaunchActivity" Android:theme="@style/OfficeLensSplashTheme">
            <intent-filter>
                <action Android:name="Android.intent.action.MAIN"/>
                <category Android:name="Android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <activity Android:configChanges="orientation|screenSize" Android:label="@string/officelens_app_name" Android:launchMode="singleTask" Android:name="com.Microsoft.office.officelens.MainActivity" Android:theme="@style/FullscreenTheme"/>
        <activity Android:label="@string/officelens_app_name" Android:name="com.Microsoft.office.officelens.SecureActivity" Android:parentActivityName="com.Microsoft.office.officelens.MainActivity" Android:windowSoftInputMode="stateHidden"/>
        <activity Android:label="@string/title_activity_settings" Android:name="com.Microsoft.office.officelens.SettingsActivity" Android:parentActivityName="com.Microsoft.office.officelens.MainActivity"/>
        <activity Android:configChanges="orientation|screenSize" Android:label="" Android:name="com.Microsoft.office.officelens.AboutActivity" Android:parentActivityName="com.Microsoft.office.officelens.SettingsActivity"/>
        <activity Android:label="" Android:name="com.Microsoft.office.officelens.FirstRunActivity" Android:parentActivityName="com.Microsoft.office.officelens.MainActivity" Android:screenOrientation="portrait" Android:theme="@style/OfficeLensFirstRunTheme"/>
        <activity Android:label="@string/title_activity_section_picker" Android:name="com.Microsoft.onenote.pickerlib.OneNotePickerActivity" Android:theme="@style/Theme.AppCompat.Light"/>
        <activity Android:exported="false" Android:icon="@drawable/ms_logo" Android:label="@string/webflow_header" Android:name="com.Microsoft.onlineid.authenticator.AccountAddPendingActivity" Android:theme="@style/Theme.MSA"/>
        <activity Android:configChanges="orientation|screenSize" Android:exported="false" Android:icon="@drawable/ms_logo" Android:label="@string/webflow_header" Android:name="com.Microsoft.onlineid.internal.ui.WebWizardActivity" Android:theme="@style/Theme.MSA" Android:windowSoftInputMode="adjustResize">
            <intent-filter>
                <action Android:name="com.Microsoft.onlineid.internal.SIGN_IN"/>
                <action Android:name="com.Microsoft.onlineid.internal.RESOLVE_INTERRUPT"/>
                <category Android:name="Android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
        <activity Android:configChanges="orientation|screenSize" Android:exported="false" Android:icon="@drawable/ms_logo" Android:label="@string/webflow_header" Android:name="com.Microsoft.onlineid.ui.AddAccountActivity" Android:theme="@style/Theme.MSA" Android:windowSoftInputMode="adjustResize">
            <intent-filter>
                <action Android:name="com.Microsoft.onlineid.internal.ADD_ACCOUNT"/>
                <action Android:name="com.Microsoft.onlineid.internal.SIGN_UP_ACCOUNT"/>
                <category Android:name="Android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
        <activity Android:configChanges="orientation|screenSize" Android:exported="false" Android:name="com.Microsoft.onlineid.ui.SignOutActivity" Android:theme="@style/Theme.MSA.Transparent"/>
        <activity Android:exported="false" Android:icon="@drawable/ms_logo" Android:label="@string/webflow_header" Android:name="com.Microsoft.onlineid.internal.ui.AccountPickerActivity" Android:theme="@style/Theme.MSA.Dialog">
            <intent-filter>
                <action Android:name="com.Microsoft.onlineid.internal.PICK_ACCOUNT"/>
                <category Android:name="Android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
        <service Android:exported="false" Android:name="com.Microsoft.onlineid.internal.MsaService">
            <intent-filter>
                <action Android:name="com.Microsoft.onlineid.internal.GET_TICKET"/>
                <action Android:name="com.Microsoft.onlineid.internal.UPDATE_PROFILE"/>
                <action Android:name="com.Microsoft.onlineid.internal.SIGN_OUT"/>
                <action Android:name="com.Microsoft.onlineid.internal.SIGN_OUT_ALL_APPS"/>
                <category Android:name="Android.intent.category.DEFAULT"/>
            </intent-filter>
        </service>
        <service Android:enabled="true" Android:exported="false" Android:name="com.Microsoft.onlineid.sso.service.MsaSsoService">
            <intent-filter>
                <action Android:name="com.Microsoft.msa.action.SSO_SERVICE"/>
            </intent-filter>
            <meta-data Android:name="com.Microsoft.msa.service.sso_version" Android:value="1"/>
            <meta-data Android:name="com.Microsoft.msa.service.sdk_version" Android:value="@string/sdk_version_name"/>
        </service>
    </application>
    <uses-permission Android:name="com.Android.vending.CHECK_LICENSE"/>
    <uses-permission Android:name="Android.permission.MANAGE_ACCOUNTS"/>
    <uses-permission Android:name="Android.permission.USE_CREDENTIALS"/>
    <uses-feature Android:name="Android.hardware.telephony" Android:required="false"/>
</manifest>

このファイルを注意深く読むと、これが他のAPIと相互作用することが不可能であることがわかります。これを他のアプリケーションと相互作用させるための「ブロードキャスト」「適切な「インテントフィルター」」もありません。

これは今日では不可能です。

とにかく、明らかに、ローカルストレージに保存し、アプリを使用してSDカードからデータを取得できます。

3
Vyacheslav