たくさんのグーグル検索の後、ジェスチャの作成と保存に使用しているジェスチャビルダーのソースコードを見た後、この質問を投稿しています。問題は、未加工のファイルから読み込んでいるジェスチャ ライブラリが正しく読み込まれることですが、新しいジェスチャを保存しようとすると失敗し、save メソッドが返されfalse
ました。確認gestureLibrary.isReadOnly()
したところ も返さtrue
れましたが、読み取り専用なので保存できないということですか? 外部ストレージと内部ストレージへの書き込みにすべての権限を使用しています。何か助けて?!
質問する
365 次
1 に答える
0
res フォルダ、つまり res/raw にあるジェスチャ ファイルを保存しようとすると、実行時にアプリケーション リソースを編集することは許可されていないため、保存できません。
したがって、ジェスチャ ファイルをアセットに配置し、アプリをインストールする電話に保存してから、GestureLibrary クラスの save メソッドを使用して問題を解決できます。
アセット ファイルを内部メモリに保存するコード:
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 に答える