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

imudak email@hidden
2010年 10月 28日 (木) 14:53:59 JST


岡野です。

情報ありがとうございます。>koderaさん
同じような悩みを抱えておられる方がいるというだけでも励みになります。

☆adb pushとadb installの違い:

1.6と2.2で違うのかもしれませんが、adb push時のログを眺めていると/system/appにpush後、
勝手にpackageのインストールが走っています。
同様に/system/appからapkファイルを削除すると、アンインストーラが走ります。

adb installだと、一般のアプリとしてインストールされるようですね。
/data/app以下にapkファイルがコピーされていました。

☆その後の進捗:

たまたま見つけたpiraterum( http://goo.gl/LusK 、詳細不明 )というカスタムROMの中に、
 GoogleServicesFramework.apk
 VoiceSearch.apk
が混ざっていたので、試しに入れてみました。

結果、VoiceSearch自身がエラーで落ち無くなり、「接続エラー」ダイアログが表示されるようになりました。
ログをみると二種類のエラーが出ています。

ネットワーク>
ERROR/RecognitionController(312): No active network found
 ERROR/RecognitionController(312): ERROR_NETWORK

MediaPlayer>
ERROR/MediaPlayer(312): error (-19, 0)
ERROR/MediaPlayer(312): Error (-19,0)

Google謹製のアプリは、無線LANでの接続を前提にしていて、たとえ有線LANの経路があっても
無視してエラーにしているようです。
アカウントの同期やGmailのでも同様に、ネットワークエラーになっています。

MediaPlayerのエラーの方は、ALSAの設定がちゃんとしてないから?
ダイアログを閉じた後は、MediaPlayerを立ち上げようとする<->エラーで落ちるの無限ループになってしまいます。

ERROR/ALSALib(352):
external/alsa-lib/src/control/control.c:902:(snd_ctl_open_noupdate)
Invalid CTL AndroidOut
WARN/AudioHardwareALSA(352): Unable to attach mixer to device
AndroidOut: No such file or directory
ERROR/ALSALib(352):
external/alsa-lib/src/control/control.c:902:(snd_ctl_open_noupdate)
Invalid CTL AndroidIn
WARN/AudioHardwareALSA(352): Unable to attach mixer to device
AndroidIn: No such file or directory
ERROR/ALSALib(352):
external/alsa-lib/src/pcm/pcm.c:2210:(snd_pcm_open_noupdate) Unknown
PCM AndroidPlayback_Speaker_normal
ERROR/ALSALib(352):
external/alsa-lib/src/pcm/pcm.c:2210:(snd_pcm_open_noupdate) Unknown
PCM AndroidPlayback_Speaker
ERROR/ALSALib(352):
external/alsa-lib/src/pcm/pcm.c:2210:(snd_pcm_open_noupdate) Unknown
PCM AndroidPlayback
ERROR/ALSAModule(352): Unable to set hardware parameters: Invalid argument
ERROR/AudioPolicyManagerBase(352): Failed to initialize hardware
output stream, samplingRate: 0, format 0, channels 0
ERROR/AudioService(44): Media server died.
(以下上記を繰り返し)

ソースがあるところでエラーが出ているので、もう少し追ってみます。

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


2010年10月27日18:02 kodera <email@hidden>:
> お世話になります。
> 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 mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>



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