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