반응형
API 호출을 위한 인터넷 연결 설정 (Volley 라이브러리 사용)
- build.gradle (Module)
dependencies {
implementation 'com.android.volley:volley:1.2.1'
}
- AndroidManifests.xml
<uses-permission android:name="android.permission.INTERNET" />
네이버 파파고 API
- 번역을 해주는 오픈 소스 API
- json 형태로 api를 호출
- POST URL : https://openapi.naver.com/v1/papago/n2mt
- 필요한 데이터 키 값 (json)
- source : 원본 언어
- target : 목적 언어
- text : 번역할 텍스트
- translatedText : 번역된 텍스트
앱에서 파파고 API를 이용하여 번역 기능 구현하기 (Android Studio)
기능 설계
- 번역할 문장을 입력하고 버튼을 누르면 번역된 문장 출력
레이아웃 UI 설계
소스 코드
- MainActivity.java
- ApiKey.java 파일에 API 키와 시크릿 키를 따로 저장
public class MainActivity extends AppCompatActivity {
EditText editTrans;
Button btnTrans;
TextView txtResult;
String ApiUrl = "https://openapi.naver.com/v1/papago/n2mt"; // API 요청 URL
String source = "ko"; // 원본 언어
String target = "en"; // 목적 언어
String text; // 번역할 텍스트
ArrayList<String> papagoList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editTrans = findViewById(R.id.editText);
btnTrans = findViewById(R.id.button);
txtResult = findViewById(R.id.textView);
btnTrans.setOnClickListener(view -> {
// 에디트텍스트의 값 저장
text = editTrans.getText().toString().trim();
if (text.isEmpty()) {
Toast.makeText(getApplicationContext(), "번역할 문장을 입력하세요", Toast.LENGTH_LONG).show();
return;
}
// 네이버 API 호출
RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
StringRequest request = new StringRequest( Request.Method.POST, ApiUrl,
response -> {
// API 호출 결과 저장
try {
JSONObject result = new JSONObject(response);
String translatedText = result.getJSONObject("message").getJSONObject("result").getString("translatedText");
txtResult.setText(translatedText);
} catch (JSONException e) { e.printStackTrace(); }
}, error -> { })
{// request 바로 뒤에 헤더 추가
@Override
public Map<String, String> getHeaders() {
Map<String, String> params = new HashMap<>();
params.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); // 키와 밸류
params.put("X-Naver-Client-Id", ApiKey.NAVER_API_KEY); // 자신의 API 키 입력
params.put("X-Naver-Client-Secret", ApiKey.NAVER_SECRET_KEY); // 자신의 API 시크릿 키 입력
return params;
}
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
params.put("source", source); // 원본 언어
params.put("target", target); // 목적 언어
params.put("text", text); // 번역할 텍스트
return params;
}
};
queue.add(request);
});
}
}
- ApiKey.java
public class ApiKey {
public final static String NAVER_API_KEY = "자신의API키입력";
public final static String NAVER_SECRET_KEY = "자신의시크릿키입력";
}
실행 화면
- 앱 처음 실행시의 화면
- 번역할 문장을 입력하고 버튼 클릭
네이버 파파고 API 레퍼런스
https://developers.naver.com/docs/papago/papago-nmt-api-reference.md
반응형