簡體   English   中英

使用語音識別android時將數據從一個活動傳遞到另一個活動

[英]Passing data from one Activity to another Activity when using speech recognition android

我的Android Studio項目中有下一個代碼

@Override
public void startActivity(Intent intent) {
    boolean bandera = Intent.ACTION_SEARCH.equals(intent.getAction()) || RecognizerIntent.ACTION_RECOGNIZE_SPEECH.equals(intent.getAction());
    if (bandera) {
        intent.putExtra("usuario", usuarioIS);
    }
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    super.startActivity(intent);
}

搜索時,我使用putExtra方法將用戶的一些信息從實際活動發送到另一個活動。 但是當我使用語音識別時,startActivity方法會在手機中引發異常,而android studio不會提供有關異常的信息。 有誰知道為什么語音識別不起作用?

這是我的清單。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.ivan.saberespoder" >

    <!-- To access Google+ APIs: rex -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- To retrieve OAuth 2.0 tokens or invalidate tokens to disconnect a user. This disconnect *** option is required to comply with the Google+ Sign-In developer policies -->
    <uses-permission android:name="android.permission.USE_CREDENTIALS" /> <!-- To retrieve the account name (email) as part of sign-in: -->
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <!-- To auto-complete the email text field in the login form with the user's emails -->
    <uses-permission android:name="android.permission.READ_PROFILE" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />

    <activity
        android:name="com.facebook.FacebookActivity"
        android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/logopeq"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/facebook_app_id" />

        <activity
            android:name=".PantallaPrincipal"
            android:label="iShots" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <meta-data
                android:name="android.app.default_searchable"
                android:value=".Busqueda" />
        </activity>
        <activity
            android:name=".Busqueda"
            android:label="@string/title_activity_busqueda" >
            <intent-filter>
                <action android:name="android.intent.action.SEARCH" />
            </intent-filter>

            <meta-data
                android:name="android.app.searchable"
                android:resource="@xml/searchable" />
        </activity>
        <activity
            android:name=".LoginActivity"
            android:label="@string/title_activity_login"
            android:windowSoftInputMode="adjustResize|stateHidden" >
        </activity>

        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <activity
            android:name=".Registro"
            android:label="@string/title_activity_menu_usuario" >
        </activity>
        <activity
            android:name=".MostrarShot"
            android:label="@string/title_activity_mostrar_shot" >
        </activity>
        <activity
            android:name=".Settings"
            android:label="@string/title_activity_settings" >
        </activity>
        <activity
            android:name=".AgregarShot"
            android:label="@string/title_activity_agregar_shot" >
        </activity>
        <activity
            android:name=".ProfileActivity"
            android:label="@string/title_activity_profile" >
        </activity>
        <activity
            android:name=".HelpActivity"
            android:label="@string/title_activity_help" >
        </activity>
        <activity
            android:name=".AboutActivity"
            android:label="@string/title_activity_about" >
        </activity>
    </application>
</manifest>

我是使用Android Studio的新手

公共靜態最終字符串ACTION_RECOGNIZE_SPEECH

在API級別3中添加。啟動一個活動,該活動將提示用戶進行語音交流並通過語音識別器發送語音。 如果使用startActivityForResult(Intent,int)啟動意圖,則結果將通過活動結果返回(在onActivityResult(int,int,Intent)中),或者如果提供的話,則通過PendingIntent轉發。

不支持僅使用startActivity(Intent)啟動此意圖。 您必須使用startActivityForResult(Intent,int)或提供PendingIntent來接收識別結果。 文件來源

因此,嘗試處理startActivityForResult();

其次,您應該向Manifest添加權限:

<uses-permission android:name="android.permission.RECORD_AUDIO" />

第三,如果定義了Action RecognizerIntent.ACTION_RECOGNIZE_SPEECH ,那么系統將嘗試打開可以處理它的Activity 因此,對於您的下一個Activity您應該將此“技能”添加到Manifest 來源 如果您不想要,只需照常使用Intent.ACTION_VIEW處理此Activity

另外,您還可以得到一個不錯的答案 我猜這將適合您。

試試看。 希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM