[Armadillo:06005] Re: Armadillo-440 & Froyoでの音声検索(VoiceSearch.apk)を動作させたい

imudak email@hidden
2010年 10月 27日 (水) 12:17:32 JST


岡野です。

お忙しい中OHA関連の詳細な解説ありがとうございました。>古賀さん
コードが公開されていないアプリを非推奨な方法で入れようとしているのですから、無理があるのかもしれませんね…

結局動かないにしろ、どこが越えられない壁となっているかはっきりするまではみておきたいと思います。

以下ご参考までに調査の途中経過報告しておきます。
かなり迷走気味ですが、何か気づかれた方がいらっしゃいましたらお知らせ頂けると幸いです。

----
件のGoogleServicesFramework.apkをpushした時のログを見直してみると、一つWarningが出ていました。

 WARN/RecognitionManagerService(49): no available voice recognition
services found

音声認識関連の大事なサービスが立ち上がっていない(インストールされていない)ようです。
Warningを出している部分のソースコードは公開されていて、以下のようにベタに
 RecognitionService.SERVICE_INTERFACE
を探しにいっているようです。

    ComponentName findAvailRecognizer(String prefPackage) {
        List<ResolveInfo> available =
                mContext.getPackageManager().queryIntentServices(
                        new Intent(RecognitionService.SERVICE_INTERFACE), 0);
        int numAvailable = available.size();

        if (numAvailable == 0) {
            Slog.w(TAG, "no available voice recognition services found");
            return null;
        } else {

結局RecognitionServiceを立ちあげないといけないのですが、これがどこで起動しているのか不明です。

OHA-Android-2.2_r1.1/frameworks/base/services/jni/にcppファイルがいくつかあるので、OHA加盟企業の製品版には
ここのコードがあるのかもしれません(com_android_server_RecognitionService.cppとか…)

% ls
Android.mk
com_android_server_KeyInputQueue.cpp
com_android_server_SystemServer.cpp
com_android_server_AlarmManagerService.cpp
com_android_server_LightsService.cpp
com_android_server_VibratorService.cpp
com_android_server_BatteryService.cpp
com_android_server_SensorService.cpp  onload.cpp

ただ、このサービスが無いことと、リソースが取得できないエラーとは直接には繋がらないですね…

以上よろしくお願いします。
----
OKANO



2010年10月27日7:39 Shin-ya Koga <email@hidden>:
> サムシングプレシャスの古賀です。
>
> 岡野さん([Armadillo:05991]):
>>お忙しい中、ソースの中まで見ていただきありがとうございました。>古賀さん
>
> あ、いえいえ。たまたま、社内に Froyo のビルド環境があったもの
> ですから :-)
>
>>native methodというところで、大事なことを思い出しました。
>>大分前ですっかり忘れてたのですが、インストールしたapkが他にもあります。
>>
>>下記が現象に至る最小インストールです。
>>☆が追記部分です。
>>
>>環境等詳細>
>>・Armadillo-440
>>・Android 2.2_r1.1 ( solaさんのgitからビルド )
>>>・インストール
>> apk push VoiceSearch.apk /system/app
>>☆NexusOneの/system/app/GoogleServicesFramework.apkをsmali/baksmaliで作り直し。
>>☆インストール
>> apk push GoogleServicesFramework.apk /system/app
>>☆nexusoneの/system/lib/libspeech.soを/system/libにインストール。
>>・ VoiceSearchを起動→
>>「Voice Search(com.google.android.voicesearch)が予期せず停止しました。やり直してください」
>>
>>今、まっさらな状態からやり直して確認しました。
>>
>>GoogleServicesFramework.apkのインストールを省くと以下のエラーに
>>なります。
>
> GoogleServicesFramework.apk を入れないと、
> android.content.res.AssetManager ではないところでエラーするように
> 変わる、ということですね。
>
>>D/AndroidRuntime(  371): Shutting down VM
>>W/dalvikvm(  371): threadid=1: thread exiting with uncaught exception
>>(group=0x4001d7d8)
>>E/AndroidRuntime(  371): FATAL EXCEPTION: main
>>E/AndroidRuntime(  371): java.lang.RuntimeException: Unable to start
>>activity ComponentInfo{com.google.android.voicesearch/com.google.android.voicesearch.RecognitionActivity}:
>>java.lang.UnsupportedOperationException: GoogleSettingsProvider not
>>found
>>E/AndroidRuntime(  371):        at
>>android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
>>>
>>GoogleSettingsProviderがないと言われています。
>>OHAのソースにGoogleSettingsProviderがなかったので、NexusOneのを拝借しました。
>>
>>   $ cd $ANDROID
>>   $ find $ANDROID -iname "*.java" -exec grep -Hn GoogleSettingsProvider {} \;
>>   $
>>
>>他のアプリでは画像などのリソースを表示できているので大丈夫かと思ったのですが…
>
> VoiceSearch.apk は、Google/OHA からソースが公開されているアプリケー
> ションではないので、ソース公開されている Android の API や service/
> provider 以外のものに依存している可能性は、大ですよね。
>
> ソース公開されている Android は、OHA 加盟企業が製品に搭載している
> Android と全く同じではなく、あくまでも、公開可能な部分だけを公開して
> いるのだと思います。従って、OHA 加盟企業の製品で動いているソース非公
> 開なアプリケーションを、オープンソース版の Android へ持ってきた際に、
> 全て問題なく動くとは限らないと思います。
>
> # OHA 非加盟企業の Android 搭載製品についても、同様のことが言えると
> # 思います。その企業で独自の改変や拡張を行って機能追加し、追加した
> # 機能を使うアプリケーションを搭載している場合です。その場合、たとえ
> # .apk な Android アプリケーションであっても、他の Android 機器では
> # 動作しない筈ですよね。
>
> けっきょく、またお役に立ててなくて、ごめんなさい。
>
> --
> 古賀信哉 (株)サムシングプレシャス
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>



armadillo メーリングリストの案内