Android手势库保存和手势库只读

时间:2012-10-15 16:26:16

标签: android

经过大量谷歌搜索,我发布了这个问题 并查看手势构建器源代码,我用它来创建和保存手势。 我正在从原始文件加载的手势库正确加载,但是当我尝试向其保存新手势时,它失败并且保存方法返回false。 当我检查gestureLibrary.isReadOnly()它还返回true时,这是否意味着我无法保存到它,因为它是只读的? 我正在使用所有权限在外部存储和内部存储上写入。 有什么帮助吗?!

1 个答案:

答案 0 :(得分:0)

当尝试保存res文件夹中存在的Gesture文件,即res / raw时,您无法在运行时编辑应用程序资源。

因此,您可以将手势文件放在资源中,然后将其保存在将要安装应用程序的手机中,然后尝试使用GestureLibrary类的保存方法,这解决了我的问题。

将资产文件存储到内部存储器的代码:

File gestureFile=new File(directory.getPath(),"gesture");
try {
            InputStream is = getAssets().open("gestures");

            OutputStream os = new FileOutputStream(gestureFile);

            byte[] buffer = new byte[1024];
            int bytesRead;
            //read from is to buffer
            while((bytesRead = is.read(buffer)) !=-1){
                os.write(buffer, 0, bytesRead);
            }
            is.close();
            //flush OutputStream to write any buffered data to file
            os.flush();
            os.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

要保存的代码:

mLibrary1=GestureLibraries.fromFile(new File(directory.getPath(),"gesture"));
mLibrary1.addGesture(strTemp,gesture);
            boolean temp= mLibrary1.save();
            if(temp){
                Toast.makeText(getApplicationContext(), "Saved",Toast.LENGTH_SHORT).show();
            }else{
                Toast.makeText(getApplicationContext(), " Not Saved",Toast.LENGTH_SHORT).show();
            }

对不起,迟到了。