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

imudak email@hidden
2010年 10月 29日 (金) 12:09:53 JST


岡野です。

> 色々と環境は異なりますが、Armadillo&Androidで音声検索を動作させましょう。

ここまで来たらなんとか動かしたいですね…

少し進捗がありましたので書いておきます。

1) リソースファイルエラーの理由

E/AndroidRuntime(  367):
android.content.res.Resources$NotFoundException: File
res/raw/disambig.wav from drawable resource ID #0x7f050002

koderaさんに紹介して頂いたサイト
# http://www19.atwiki.jp/hokonin/pages/75.html
をじっと眺めていて、apkの再生成の方法が違うことに気づきました。

サイトは、
 apkから対象のみを取り出す→編集する→元のapkに入れなおす

自分は
 apkの中身を全部取り出す→編集する→全部まとめて新しいapkを作る

リソースファイルも固め直しているのですが、それが原因で実行時
読み出せなくなっているようです。apkの固め方が悪いのかもしれません。
#詳細は追っていません。

現状確定した手順は以下の通りです。

% cd temp
% jar xvf ../VoiceSearch.apk
% dexdump -d classes.dex > dump.txt
% vi -b classes.dex
% zip -r ../VoiceSearch.apk . -i *.dex
% cd ..
% zip VoiceSearch.apk -d META-INF/*
% jarsigner -keystore test.keystore -verbose VoiceSearch.apk test
% adb push VoiceSearch.apk /system/app


2) ご紹介のVoiceSearch.apkの動作結果

> こちらでは、下記のVoiceSearch.apkを使用しております。
> http://www.freewarelovers.com/android/app/voice-search

手元では未定義classを呼んでいるエラーが出ています。
Androidのバージョン違いが原因かもしれません。

E/AndroidRuntime(  307): FATAL EXCEPTION: main
E/AndroidRuntime(  307): java.lang.NoClassDefFoundError:
com.google.common.android.AndroidConfig
E/AndroidRuntime(  307): 	at
com.google.android.voicesearch.VoiceSearchLogger$MasfLogger.<init>(VoiceSearchLogger.java:253)
E/AndroidRuntime(  307): 	at
com.google.android.voicesearch.VoiceSearchLogger.<init>(VoiceSearchLogger.java:78)
E/AndroidRuntime(  307): 	at
com.google.android.voicesearch.VoiceSearchLogger.getLogger(VoiceSearchLogger.java:55)
E/AndroidRuntime(  307): 	at
com.google.android.voicesearch.RecognitionActivity.onCreate(RecognitionActivity.java:376)
E/AndroidRuntime(  307): 	at
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime(  307): 	at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
E/AndroidRuntime(  307): 	at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
E/AndroidRuntime(  307): 	at
android.app.ActivityThread.access$2300(ActivityThread.java:125)
E/AndroidRuntime(  307): 	at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
E/AndroidRuntime(  307): 	at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(  307): 	at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(  307): 	at
android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime(  307): 	at
java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(  307): 	at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(  307): 	at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime(  307): 	at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/AndroidRuntime(  307): 	at dalvik.system.NativeStart.main(Native Method)

3) ネットワークエラー

 1)の手順を用いて、もう一度NexusOneから引っ張ってきたapkを作り直したら出なくなりました。
ALSA/MediaServerのエラーはそのまま残っています。


4) 現状

AudioRecordオブジェクトに渡るサンプリングレートの設定がうまくいっていないようなので、
dexdumpで設定してそうなところを確認しながら、バイナリエディタで編集しているところです。
現状効果なしですが・・・

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




2010年10月28日16:36 kodera <email@hidden>:
> koderaです。
>
> 色々と環境は異なりますが、Armadillo&Androidで音声検索を動作させましょう。
>
> ☆使用しているVoiceSearch.apkファイル
>
> 使用しているVoiceSarch.apkを明記しておりませんでした。
> こちらでは、下記のVoiceSearch.apkを使用しております。
> http://www.freewarelovers.com/android/app/voice-search
>
> # Androidマーケットに接続出来る環境がなく、apkファイルを入手出来ないため
> # 下記サイトの情報を参考に探し出しました。(ファイルサイズのみですが)
> # http://www19.atwiki.jp/hokonin/pages/75.html
>
> ☆ネットワーク接続環境について
>
>> 結果、VoiceSearch自身がエラーで落ち無くなり、「接続エラー」ダイアログが表示されるようになりました。
>> ログをみると二種類のエラーが出ています。
>>
>> ネットワーク>
>> ERROR/RecognitionController(312): No active network found
>> ERROR/RecognitionController(312): ERROR_NETWORK
>> Google謹製のアプリは、無線LANでの接続を前提にしていて、たとえ有線LANの経路があっても
>> 無視してエラーにしているようです。
>
> 有線LANで接続しておりますが、該当のエラーは出ておりません。
> apkファイルの違いでしょうか。。。
>
> ☆ALSA関連のエラーについて
>
>> MediaPlayerのエラーの方は、ALSAの設定がちゃんとしてないから?
>> ダイアログを閉じた後は、MediaPlayerを立ち上げようとする<->エラーで落ちるの無限ループになってしまいます。
>
> こちらでは、Android起動時にALSE関連のエラーが出力されております。
> また、VoiceSearch起動時にも別のALSA関連のエラーが出力さておりますが、無限ループのような現象は発生しておりません。
> ALSE関連のドライバが上手く動作しておらず音声データがVoiceSearchの方に渡せていないのが原因でないかと予想しております。
>
> ・Android起動時ログ
> INFO/DEBUG(4097): debuggerd: Oct 26 2010 19:38:38
> INFO/vold(4096): Android Volume Daemon version 2.0
> DEBUG/vold(4096): Bootstrapping complete
> DEBUG/AndroidRuntime(4101): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
> DEBUG/AndroidRuntime(4101): CheckJNI is ON
> DEBUG/AndroidRuntime(4101): --- registering native functions ---
> INFO/(4102): ServiceManager: 0xac38
> ERROR/ALSALib(4102): external/alsa-lib/src/control/control.c:909:(snd_ctl_open_noupdate) Invalid CTL AndroidPlayback
> ERROR/AudioHardwareALSA(4102): Unable to attach mixer to device AndroidPlayback: No such file or directory
> ERROR/ALSALib(4102): external/alsa-lib/src/control/control.c:909:(snd_ctl_open_noupdate) Invalid CTL AndroidRecord
> ERROR/AudioHardwareALSA(4102): Unable to attach mixer to device AndroidRecord: No such file or directory
> WARN/HAL(4102): load: module=/system/lib/hw/acoustics.armadillo500fx.so error=Cannot load library: load_library[985]: Library '/system/lib/hw/acoustics.armadillo500fx.so' not found
> ERROR/ALSALib(4102): external/alsa-lib/src/pcm/pcm.c:2201:(snd_pcm_open_noupdate) Unknown PCM AndroidPlayback
> INFO/AudioHardwareALSA(4102): Initialized ALSA PLAYBACK device default
> DEBUG/A2dpAudioInterface(4102): A2dpAudioInterface::openOutputStream 1, 0, 0
> INFO/AudioFlinger(4102): AudioFlinger's thread ready to run for output 0
>
> また進捗があればご報告いたします。
> 以上よろしくお願いします。
>
> ---
> kodera
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>



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