구현할 내용
- HTTP 통신으로 받은 데이터를 Notification에 전달
- 해당 정보로 내부저장소의 파일 삭제
- 9. Class로 Notification 설정 에서 추가, 수정
private static class CallFunctionTask extends AsyncTask<Void, Void, String> {
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
Log.d("TEST : ", result);
if (result == null) {
// retry
new CallFunctionTask().execute();
} else {
Log.d("TEST : ", result);
int check = 0; // 저장여부
try {
JSONObject resultjson = new JSONObject(result);
check = resultjson.getInt("SAVE");
JSONObject INFO = resultjson.getJSONObject("INFO");
String NUMBER = INFO.getString("NUMBER");
String DATE = INFO.getString("DATE");
String TIME = INFO.getString("TIME");
if (check == 1){ // 녹음 상황 감지 -> 파일 저장, json 수정
Log.d("TEST : ", "파일 저장");
File filesDir = MyApplication.getAppContext().getFilesDir();
File file = new File(filesDir, "data.json");
if (file.exists()) {
// 파일이 존재하는 경우
FileInputStream inputStream = MyApplication.getAppContext().openFileInput("data.json");
byte[] bytes = new byte[inputStream.available()];
inputStream.read(bytes);
inputStream.close();
String jsonString = new String(bytes);
JSONArray myJsonArray = new JSONArray(jsonString);
myJsonArray.put(resultjson);
FileOutputStream outputStream = MyApplication.getAppContext().openFileOutput("data.json", Context.MODE_PRIVATE);
outputStream.write(myJsonArray.toString().getBytes());
outputStream.close();
} else {
// 파일이 존재하지 않는 경우
JSONArray myJsonArray = new JSONArray();
myJsonArray.put(resultjson);
FileOutputStream outputStream = MyApplication.getAppContext().openFileOutput("data.json", Context.MODE_PRIVATE);
outputStream.write(myJsonArray.toString().getBytes());
outputStream.close();
}
NotificationUtil notificationUtil = new NotificationUtil();
Intent intent = new Intent(MyApplication.getAppContext(), NotificationUtil.class);
intent.putExtra("NUMBER", NUMBER);
intent.putExtra("DATE", DATE);
intent.putExtra("TIME", TIME);
notificationUtil.onReceive(MyApplication.getAppContext(), intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
else{ // 녹음 불필요 -> 파일 삭제
Log.d("TEST : ", "파일 삭제");
File sdcard = Environment.getExternalStorageDirectory();
File file = new File(sdcard, "Recordings/" + NUMBER + "_" + DATE + "_" + TIME + ".m4a");
String filePath = file.getAbsolutePath();
file = new File(filePath);
if (file.exists()) {
Log.d("TEST : ", filePath);
file.delete();}
}
} catch (Exception e) {
Log.e("error json", e.getMessage(), e);
}
}
File sdcard = Environment.getExternalStorageDirectory();
직전에 FileUploadUtils로부터 파일에 대한 정보를 얻어온다.File sdcard = Environment.getExternalStorageDirectory();
File file = new File(sdcard, "Recordings/" + NUMBER + "_" + DATE + "_" + TIME + ".m4a");
// 파일명 수정 가능
String filename = file.getAbsolutePath();
Intent deleteintent = new Intent(fileDelete(context.getApplicationContext(),filename));
PendingIntent deletependig = PendingIntent.getActivity(context.getApplicationContext(), 0, deleteintent, PendingIntent.FLAG_IMMUTABLE);
builder.addAction(R.drawable.vk_black, "삭제", deletependig);
public static String fileDelete(Context context, String filePath){
try{
File file = new File(filePath);
if (file.exists()) {
Log.d("TEST : ", filePath);
file.delete();}
return "true";
} catch (Exception e){
Log.d("TEST : ", filePath);
e.printStackTrace();
}
return "true";
}