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

kodera email@hidden
2010年 10月 27日 (水) 18:02:14 JST


お世話になります。
koderaです。

Armadillo-500FX & EM1(Android1.6)でVoice Search(Google音声検索)を動作させようと試みております。
こちらでは、システムが落ちてしまうというような事はありませんが、
Armadillo上でVoice Searchを実行した際、"接続エラー"というコーションが表示され実行できません。
また、ログ上には、LocationManagerServiceからのエラーが出力されています。
 
環境以外の違いとしては、VoiceSearch.apkのインストール方法となります。
adb push でなく、adb installを使用しております。
あまり有用な情報ではありませんが参考までに、、、

Armadillo-500FX、EM1(Android1.6)でGoogle音声検索の実行を試みた方いれば、
アドバイスをよろしくお願い致します。

■環境
・Armadillo-500FX
・Android、kernel  OESF EM1
 http://github.com/OESF/Embedded-Master-ARM

■実行手順
・VoiceSearch.apkをインストール
  adb install VoiceSearch.apk
・VoiceSearch.apkを実行
  音声検索のアイコンを選択
  "接続エラー"というコーションが表示され実行できません。

 # ちなみにインストールしたVoiceSearch.apkは、エミュレータ上では動作しています。
 # Armadillo上では、下記サイトの手順で変更を加えたもの、加えていないもの、
 # どちらも同じエラーが出力され動作しません。
 # http://www19.atwiki.jp/hokonin/pages/75.html

■logcat内容
・インストール時
03-02 22:48:57.357: DEBUG/dalvikvm(4496): GC freed 567 objects / 31112 bytes in 57ms
03-02 22:48:59.687: DEBUG/AndroidRuntime(10091): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
03-02 22:48:59.687: DEBUG/AndroidRuntime(10091): CheckJNI is ON
03-02 22:48:59.777: DEBUG/AndroidRuntime(10091): --- registering native functions ---
03-02 22:48:59.787: INFO/jdwp(10091): received file descriptor 28 from ADB
03-02 22:48:59.897: DEBUG/ddm-heap(10091): Got feature list request
03-02 22:49:00.157: DEBUG/PackageParser(4328): Scanning package: /data/app/vmdl75235.tmp
03-02 22:49:00.537: INFO/PackageManager(4328): /data/app/vmdl75235.tmp changed; unpacking
03-02 22:49:00.547: DEBUG/PackageManager(4328): Caching shared lib lib/armeabi/libspeech.so
03-02 22:49:00.587: DEBUG/installd(4134): DexInv: --- BEGIN '/data/app/vmdl75235.tmp' ---
03-02 22:49:01.167: DEBUG/dalvikvm(10097): DexOpt: load 95ms, verify 348ms, opt 11ms
03-02 22:49:01.817: DEBUG/installd(4134): DexInv: --- END '/data/app/vmdl75235.tmp' (success) ---
03-02 22:49:01.887: INFO/installd(4134): move /data/dalvik-cache/email@hidden@email@hidden -> /data/dalvik-cache/email@hidden@email@hidden
03-02 22:49:01.887: DEBUG/PackageManager(4328): New package installed in /data/app/com.google.android.voicesearch.apk
03-02 22:49:01.887: WARN/PackageManager(4328): Unknown permission com.google.android.googleapps.permission.GOOGLE_AUTH in package com.google.android.voicesearch
03-02 22:49:01.887: WARN/PackageManager(4328): Unknown permission com.google.android.googleapps.permission.GOOGLE_AUTH.cp in package com.google.android.voicesearch
03-02 22:49:02.007: DEBUG/AndroidRuntime(10091): Shutting down VM
03-02 22:49:02.007: DEBUG/dalvikvm(10091): DestroyJavaVM waiting for non-daemon threads to exit
03-02 22:49:02.007: DEBUG/dalvikvm(10091): DestroyJavaVM shutting VM down
03-02 22:49:02.007: ERROR/AndroidRuntime(10091): ERROR: thread attach failed
03-02 22:49:02.007: DEBUG/dalvikvm(10091): HeapWorker thread shutting down
03-02 22:49:02.007: DEBUG/dalvikvm(10091): HeapWorker thread has shut down
03-02 22:49:02.007: DEBUG/jdwp(10091): JDWP shutting down net...
03-02 22:49:02.007: DEBUG/jdwp(10091): +++ peer disconnected
03-02 22:49:02.007: INFO/dalvikvm(10091): Debugger has detached; object registry had 1 entries
03-02 22:49:02.017: DEBUG/dalvikvm(10091): VM cleaning up
03-02 22:49:02.027: DEBUG/dalvikvm(10091): LinearAlloc 0x0 used 671340 of 4194304 (16%)
03-02 22:49:02.057: WARN/ResourceType(4328): No package identifier when getting value for resource number 0x7f060001
03-02 22:49:02.067: DEBUG/HomeLoaders(4432): application intent received: android.intent.action.PACKAGE_ADDED, replacing=false
03-02 22:49:02.067: DEBUG/HomeLoaders(4432):   --> package:com.google.android.voicesearch
03-02 22:49:02.067: DEBUG/HomeLoaders(4432):   --> add package
03-02 22:49:02.237: DEBUG/dalvikvm(4328): GC freed 14310 objects / 772104 bytes in 100ms
03-02 22:49:02.267: DEBUG/Searchables(4328): Checking component ComponentInfo{com.google.android.providers.enhancedgooglesearch/com.google.android.providers.enhancedgooglesearch.Launcher}
03-02 22:49:07.377: DEBUG/dalvikvm(4667): GC freed 202 objects / 9136 bytes in 45ms

・実行時
INFO/WindowManager(4328): Checking dispatch to: Window{43a3a9b8 Keyguard paused=false}
INFO/WindowManager(4328): Not visible!
INFO/WindowManager(4328): Checking dispatch to: Window{439527e0 StatusBar paused=false}
INFO/WindowManager(4328): Checking dispatch to: Window{4399c218 StatusBarExpanded paused=false}
INFO/WindowManager(4328): Not visible!
INFO/WindowManager(4328): Checking dispatch to: Window{439dfb30 TrackingView paused=false}
INFO/WindowManager(4328): Not visible!
INFO/WindowManager(4328): Checking dispatch to: Window{43b39908 InputMethod paused=false}
INFO/WindowManager(4328): Not visible!
INFO/WindowManager(4328): Checking dispatch to: Window{43b12048 com.android.launcher/com.android.launcher.Launcher paused=false}
INFO/ActivityManager(4328): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.google.android.voicesearch/.RecognitionActivity }
ERROR/LocationManagerService(4328): requestUpdates got exception:
ERROR/LocationManagerService(4328): java.lang.IllegalArgumentException: provider=network
ERROR/LocationManagerService(4328):     at com.android.server.LocationManagerService.requestLocationUpdatesLocked(LocationManagerService.java:964)
ERROR/LocationManagerService(4328):     at com.android.server.LocationManagerService.requestLocationUpdates(LocationManagerService.java:934)
ERROR/LocationManagerService(4328):     at android.location.ILocationManager$Stub.onTransact(ILocationManager.java:79)
ERROR/LocationManagerService(4328):     at android.os.Binder.execTransact(Binder.java:287)
ERROR/LocationManagerService(4328):     at dalvik.system.NativeStart.run(Native Method)
WARN/MediaPlayer(12333): info/warning (1, 44)
ERROR/ALSALib(4124): external/alsa-lib/src/pcm/pcm.c:2201:(snd_pcm_open_noupdate) Unknown PCM AndroidPlayback_Speaker_normal
ERROR/ALSALib(4124): external/alsa-lib/src/pcm/pcm.c:2201:(snd_pcm_open_noupdate) Unknown PCM AndroidPlayback_Speaker
ERROR/ALSALib(4124): external/alsa-lib/src/pcm/pcm.c:2201:(snd_pcm_open_noupdate) Unknown PCM AndroidPlayback
INFO/AudioHardwareALSA(4124): Initialized ALSA PLAYBACK device default
INFO/MediaPlayer(12333): Info (1,44)
INFO/WindowManager(4328): Checking dispatch to: Window{43a3a9b8 Keyguard paused=false}
INFO/WindowManager(4328): Not visible!
INFO/WindowManager(4328): Checking dispatch to: Window{439527e0 StatusBar paused=false}
INFO/WindowManager(4328): Checking dispatch to: Window{4399c218 StatusBarExpanded paused=false}
INFO/WindowManager(4328): Not visible!
INFO/WindowManager(4328): Checking dispatch to: Window{439dfb30 TrackingView paused=false}
INFO/WindowManager(4328): Not visible!
INFO/WindowManager(4328): Checking dispatch to: Window{43b39908 InputMethod paused=false}
INFO/WindowManager(4328): Not visible!
INFO/WindowManager(4328): Checking dispatch to: Window{43985b38 com.google.android.voicesearch/com.google.android.voicesearch.RecognitionActivity paused=false}
WARN/MediaPlayer(12333): info/warning (1, 44)
INFO/ActivityManager(4328): moveTaskToBack: 12
INFO/MediaPlayer(12333): Info (1,44)
ERROR/ALSALib(4124): external/alsa-lib/src/pcm/pcm.c:2201:(snd_pcm_open_noupdate) Unknown PCM AndroidPlayback_Speaker_normal
ERROR/ALSALib(4124): external/alsa-lib/src/pcm/pcm.c:2201:(snd_pcm_open_noupdate) Unknown PCM AndroidPlayback_Speaker
ERROR/ALSALib(4124): external/alsa-lib/src/pcm/pcm.c:2201:(snd_pcm_open_noupdate) Unknown PCM AndroidPlayback
INFO/AudioHardwareALSA(4124): Initialized ALSA PLAYBACK device default
INFO/ActivityManager(4328): moveTaskToBack: 12
DEBUG/dalvikvm(12333): GC freed 4509 objects / 340728 bytes in 91ms

(imudak) wrote, (2010/10/27 12:17):
> 岡野です。
> 
> お忙しい中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 mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo




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