1

AndroidでS音声アプリケーションを有効にするためにAndroidを使用しています。前作のように、私は上記のコードは、Android 5.0でギャラクシーS4によく働いてAndroidでS音声パケットを判別/取得する方法

String SVOICE_PACKAGE_NAME = "com.vlingo.midas"; 
String SVOICE_LISTEN_ACTION = "com.sec.action.SVOICE"; 
Intent intent = new Intent(); 
intent.setPackage(SVOICE_PACKAGE_NAME); 
intent.setAction(SVOICE_LISTEN_ACTION); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); 
try { 
    getApplication().startActivity(intent); 
} catch (final ActivityNotFoundException e) { 
    e.printStackTrace(); 
} catch (final Exception e) { 
    e.printStackTrace(); 
} 

をオンにするコードを次の使用します。しかし、この問題は、Android 6.0を搭載したGalaxy S7の1行目と2行目から発生します。アンドロイド6.0とギャラクシーS7では、1行目と2行目は、「SボイスのApp」に「S声」から変更して

SVOICE_PACKAGE_NAME = "com.samsung.voiceserviceplatform"; 
SVOICE_LISTEN_ACTION = "com.sec.action.SVOICE"; 

し、また、アプリケーション名Sの声として変更する必要があります。その変化は私には難しい仕事です。したがって、これらの機能を呼び出す前に、電話でS音声アプリを特定したいと考えています。現在のところ、Androidのバージョンやデバイスからの変更はわかりません。さまざまな携帯電話でこの問題を修正する考えがありますか:S4とS7?

+0

インテントを送信する前に、インストールされているパッケージを確認するだけではありませんか? – brandall

+0

実際には、私はただ1つの入力が "開いているS音声"である、アプリはS音声アプリをオンにする必要があります。したがって、パッケージ名を手動で確認することはできません。 – Jame

+0

入力は 'ソーセージ'になる可能性があります。 – brandall

答えて

1

アプリケーションを開くときはいつでも、パッケージ名またはアプリケーション名の違いがあります。

/** 
* Check if the user has a package installed 
* 
* @param ctx   the application context 
* @param packageName the application package name 
* @return true if the package is installed 
*/ 
public static boolean isPackageInstalled(@NonNull final Context ctx, @NonNull final String packageName) { 
    if (DEBUG) { 
     MyLog.i(CLS_NAME, "isPackageInstalled"); 
    } 

    try { 
     ctx.getApplicationContext().getPackageManager().getApplicationInfo(packageName, 0); 
     return true; 
    } catch (final PackageManager.NameNotFoundException e) { 
     if (DEBUG) { 
      MyLog.w(CLS_NAME, "isPackageInstalled: NameNotFoundException"); 
     } 
    } catch (final NullPointerException e) { 
     if (DEBUG) { 
      MyLog.w(CLS_NAME, "isPackageInstalled: NullPointerException"); 
     } 
    } catch (final Exception e) { 
     if (DEBUG) { 
      MyLog.w(CLS_NAME, "isPackageInstalled: Exception"); 
     } 
    } 

    return false; 
} 

カスタムロギングを削除する必要があります。

関連する問題