2013-03-01 41 views
0

嗨我一直在製作識別手勢的應用程序。我正在嘗試在我的程序中使用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) 

回答

0

手勢庫應該是相當小的文件。我有一個約8-10手勢的文件,它只有6KB。你使用手勢生成器生成了這個文件嗎?如果是,你是否刪除了任何多餘的手勢(特別是測試&構造)?

如果不是,手勢資源文件肯定會變得相當大,並可能會損壞。

如果可能的話,我會建議從模擬器中刪除手勢資源文件,您正在運行Gesture Builder,然後從Builder生成的乾淨文件開始。嘗試只用一兩個手勢測試代碼,然後添加更多。

編輯:只需檢查,但您的手勢文件不應該有擴展名,它應該位於/ res/raw目錄中,而且它是一個二進制文件,如果複製/傳輸它可能會有所不同。

+0

1.文件大小爲250kb。 2.我有一個類似大小的xml,運行良好。 3.我不知道手勢文件是否損壞。我無法在沒有崩潰的情況下在手勢生成器中打開它。 – 2013-03-01 21:25:58

+0

**應該在這個文件中有多少手勢**? – MandisaW 2013-03-01 21:40:32

+0

對於英文和數字中的每個字母平均也是5。 – 2013-03-01 21:47:18