0

こんにちは、ジェスチャーを認識するアプリを作っています。プログラムで Google のジェスチャ検索リソース ファイルを使用しようとしています。

問題: ジェスチャ リソース ファイルがアプリケーションとジェスチャ ビルダー (エミュレータ上) をクラッシュさせる

私の質問: Google はどのように (そしてどのようにして私は) ジェスチャ リソース ファイルを読み込みますか?

以下のエラーログ:

03-01 13:02:55.406: E/dalvikvm-heap(32207): Out of memory on a 13893864-byte allocation.
03-01 13:02:55.416: E/AndroidRuntime(32207): FATAL EXCEPTION: main
03-01 13:02:55.416: E/AndroidRuntime(32207): java.lang.OutOfMemoryError
03-01 13:02:55.416: E/AndroidRuntime(32207):    at java.util.ArrayList.<init>(ArrayList.java:75)
03-01 13:02:55.416: E/AndroidRuntime(32207):    at android.gesture.GestureStroke.deserialize(GestureStroke.java:223)
03-01 13:02:55.416: E/AndroidRuntime(32207):    at android.gesture.Gesture.deserialize(Gesture.java:277)
03-01 13:02:55.416: E/AndroidRuntime(32207):    at android.gesture.GestureStore.readFormatV1(GestureStore.java:322)
03-01 13:02:55.416: E/AndroidRuntime(32207):    at android.gesture.GestureStore.load(GestureStore.java:293)
03-01 13:02:55.416: E/AndroidRuntime(32207):    at android.gesture.GestureLibraries$ResourceGestureLibrary.load(GestureLibraries.java:132)
03-01 13:02:55.416: E/AndroidRuntime(32207):    at com.example.transittalker.main.onCreate(main.java:99)
03-01 13:02:55.416: E/AndroidRuntime(32207):    at android.app.Activity.performCreate(Activity.java:5008)
03-01 13:02:55.416: E/AndroidRuntime(32207):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
03-01 13:02:55.416: E/AndroidRuntime(32207):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2136)
03-01 13:02:55.416: E/AndroidRuntime(32207):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2207)
03-01 13:02:55.416: E/AndroidRuntime(32207):    at android.app.ActivityThread.access$600(ActivityThread.java:139)
03-01 13:02:55.416: E/AndroidRuntime(32207):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
03-01 13:02:55.416: E/AndroidRuntime(32207):    at android.os.Handler.dispatchMessage(Handler.java:99)
03-01 13:02:55.416: E/AndroidRuntime(32207):    at android.os.Looper.loop(Looper.java:137)
03-01 13:02:55.416: E/AndroidRuntime(32207):    at android.app.ActivityThread.main(ActivityThread.java:4899)
03-01 13:02:55.416: E/AndroidRuntime(32207):    at java.lang.reflect.Method.invokeNative(Native Method)
03-01 13:02:55.416: E/AndroidRuntime(32207):    at java.lang.reflect.Method.invoke(Method.java:511)
03-01 13:02:55.416: E/AndroidRuntime(32207):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
03-01 13:02:55.416: E/AndroidRuntime(32207):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)
03-01 13:02:55.416: E/AndroidRuntime(32207):    at dalvik.system.NativeStart.main(Native Method)
4

1 に答える 1

0

ジェスチャライブラリはかなり小さなファイルであると想定されています。ジェスチャが約8〜10のファイルがありますが、それはわずか6KBです。ジェスチャビルダーを使用してこのファイルを生成しましたか?もしそうなら、(特にテストと構築から)無関係なジェスチャを削除しましたか?

そうでない場合、ジェスチャリソースファイルは確かに非常に大きくなり、破損する可能性があります。

可能であれば、Gesture Builderを実行しているエミュレーターからジェスチャーリソースファイルを削除し、Builderによって生成されたクリーンなファイルからやり直すことをお勧めします。1つまたは2つのジェスチャーだけでコードをテストしてから、さらに追加してみてください。

編集:チェックするだけですが、ジェスチャーファイルには拡張子がなく、/ res / rawディレクトリにある必要があります。コピー/転送したときに違いが生じた可能性がある場合は、バイナリファイルです。

于 2013-03-01T21:23:24.370 に答える