导入手势搜索资源到我的应用程序



你好,我一直在做一个识别手势的应用程序。我正在尝试在我的程序中使用谷歌的手势搜索资源文件。

问题:手势资源文件崩溃了我的应用程序和手势生成器(在模拟器上)

我的问题:如何谷歌(以及反过来如何我)加载手势资源文件没有崩溃的内存错误?

下面的错误日志:

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)

手势库应该是相当小的文件。我有一个包含8-10个手势的文件,它只有6KB。您是否使用手势生成器生成此文件,如果是,您是否删除了任何无关的手势(特别是从测试&建筑)?

如果没有,手势资源文件肯定会变得相当大,可能会损坏。

如果可能的话,我建议从运行手势生成器的模拟器中删除手势资源文件,并重新使用生成器生成的干净文件。试着只用一两个手势测试你的代码,然后添加更多。

编辑:只是检查,但你的手势文件不应该有扩展名,它应该在/res/raw目录下,它是一个二进制文件,如果这可能会在你复制/传输它时产生差异

最新更新