2

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

4

1 回答 1

0

当尝试保存 res 文件夹(即 res/raw)中存在的 Gesture 文件时,您不能,因为不允许在运行时编辑应用程序资源。

因此,您可以将手势文件放在资产中,然后将其保存在要安装应用程序的手机中,然后尝试使用 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();
            }

抱歉,回复晚了。

于 2015-04-26T14:28:39.037 回答