구현할 내용
- flask 로컬 서버와 통신 (test 용)
- 서버에 녹음된 .m4a audio file을 전송
- 전송이 성공했다는 응답을 받기
okhttp를 사용하므로 아래 추가하기
dependencies {
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_record);
// 번호, 시간, 파일명은 이전 화면(녹음)에서 받아왔다.
// 다른 형식으로도 어떻게든 구할 수 있다면 filename에 기록
// '------' 이후부터 보면 된다
Intent intent = getIntent();
String phoneNum = intent.getStringExtra("phoneNum");
String getmin = intent.getStringExtra("min");
String getsec = intent.getStringExtra("sec");
String filename = intent.getStringExtra("filename");
TextView callnum = findViewById(R.id.callnum);
callnum.setText(phoneNum);
TextView min = findViewById(R.id.min);
if (getmin.length() < 2) {
getmin = "0" + getmin;
}
min.setText(getmin);
TextView sec = findViewById(R.id.sec);
if (getsec.length() < 2) {
getsec = "0" + getsec;
}
sec.setText(getsec);
User user = new User(phoneNum, getmin + ":" + getsec, "현재시각");
// ------------------------------------ 통신코드 시작
// 서버통신
File file = new File(filename);
FileUploadUtils.send2Server(file);
// 2.5초 후 메인화면으로 복귀
Handler timer = new Handler();
timer.postDelayed(new Runnable() {
public void run() {
Intent intent = new Intent(RecordActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
}, 2500); // 2.5초 후 main으로 복귀
}
public class FileUploadUtils {
public static void send2Server(File file){
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("files", file.getName(), RequestBody.create(MultipartBody.FORM, file))
.build();
Request request = new Request.Builder()
// Server URL 은 본인 IP를 입력
// 이 코드에서는 flask 이용하여 로컬 웹서버를 불러옴
.url("http://172.23.252.81:5000/review_model")
.post(requestBody)
.build();
// 타임아웃을 방지하기 위해 중간 3줄 설정
// 타임아웃 문제 없다면 빼도 무방
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(40, TimeUnit.SECONDS)
.writeTimeout(40, TimeUnit.SECONDS)
.readTimeout(40, TimeUnit.SECONDS)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String test = response.body().string();
Log.d("TEST : ", test);
// 서버에서 응답받은 결과를 Logcat에 출력
}
});
}