반응형
오늘은 간단하게 네이버 파파고 api 를 사용해보도록 하겠습니다 . 아주 쉬워요~
오픈 API 신청하기
처음 네이버 API를 이용하려 하는 것이라면 자신의 서비스를 등록해줘야 한다.
아래 주소로 가서 자신의 서비스를 등록하고 오도록 하자.
https://developers.naver.com/apps/#/register?defaultScope=translate
애플리케이션 - NAVER Developers
developers.naver.com
아래는 등록할 때 화면이다.
네이버 API 등록 화면
사용 API항목에서 파파고 번역을 누르고 환경을 자신의 서비스에 맞게 Web/Android/IOS 중에 고르면 된다.
등록 후 화면
애플리케이션 등록이 끝났다면 다음과 같은 화면이 나오게 되는데 여기서 ClientId와 Client Secret 키들을 복사 해놓도록 하자.
참고: https://chung-develop.tistory.com/31
일단 manifest에 퍼미션 추가해주셔야됩니다 . 네이버와 통신을 할거니까 당연히 인터넷 퍼미션을 넣어줘야겠죠?
<uses-permission android:name="android.permission.INTERNET"/>
이제 xml 파일을 만들어 보겠습니다 . 이것도 간단하게 EditText , Button , TextView로 만 하겠습니다 .
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Papago">
<EditText
android:id="@+id/et_target"
android:layout_width="247dp"
android:layout_height="49dp"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="80dp"
android:layout_marginEnd="32dp"
android:layout_marginRight="32dp"
app:layout_constraintEnd_toStartOf="@+id/btn"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="81dp"
android:layout_marginEnd="28dp"
android:layout_marginRight="28dp"
android:layout_marginBottom="42dp"
android:text="번역"
app:layout_constraintBottom_toTopOf="@+id/textView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="533dp"
android:layout_marginBottom="19dp"
android:text="결과"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
메인 액티비티입니다 . 에딧텍스트에있는것을 파파고 api가 번역을 해주고 그다음에 textView에다가 set해주라는
내용입니다.
- 샘플 코드에서 YOUR_CLIENT_ID 또는 YOUR-CLIENT-ID에는 애플리케이션을 등록하고 발급받은 클라이언트 아이디 값을 입력합니다.
- 샘플 코드에서 YOUR_CLIENT_SECRET 또는 YOUR-CLIENT-SECRET에는 애플리케이션을 등록하고 발급받은 클라이언트 시크릿 값을 입력합니다.
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
public class Papago extends AppCompatActivity {
EditText et_target;
TextView textView;
Button btn ;
String getresult;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_papago);
textView = findViewById(R.id.textView);
et_target = findViewById(R.id.et_target);
btn = findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final Translate translate = new Translate();
translate.execute(); //버튼 클릭시 ASYNC 사용
}
});
}
class Translate extends AsyncTask <String ,Void, String >{ //ASYNCTASK를 사용
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
protected String doInBackground(String... strings) {
//////네이버 API
String clientId = ""; //애플리케이션 클라이언트 아이디값";
String clientSecret = ""; //애플리케이션 클라이언트 시크릿값";
try {
String text = URLEncoder.encode(et_target.getText().toString(), "UTF-8"); /// 번역할 문장 Edittext 입력
String apiURL = "https://openapi.naver.com/v1/papago/n2mt";
URL url = new URL(apiURL);
HttpURLConnection con = (HttpURLConnection)url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("X-Naver-Client-Id", clientId);
con.setRequestProperty("X-Naver-Client-Secret", clientSecret);
// post request
String postParams = "source=ko&target=en&text=" + text;
con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(postParams);
wr.flush();
wr.close();
int responseCode = con.getResponseCode();
BufferedReader br;
if(responseCode==200) { // 정상 호출
br = new BufferedReader(new InputStreamReader(con.getInputStream()));
} else { // 에러 발생
br = new BufferedReader(new InputStreamReader(con.getErrorStream()));
}
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = br.readLine()) != null) {
response.append(inputLine);
}
br.close();
System.out.println(response.toString());
// textView.setText(response.toString());
getresult = response.toString();
getresult = getresult.split("\"")[27]; //스플릿으로 번역된 결과값만 가져오기
textView.setText(getresult); // 텍스트뷰에 SET해주기
} catch (Exception e) {
System.out.println(e);
}
return null;
}
}
}
이상 파파고 api 였습니다 . ㅎㅎ
반응형
'안드로이드' 카테고리의 다른 글
[Android/ Java] ExoPlayer 로 동영상 재생하기 ! (0) | 2021.12.02 |
---|---|
안드로이드 부트페이 API 카카오결제 사용! (JAVA) (2) | 2021.11.18 |
FCM 토큰 이용해서 상대방에게 메세지 날리기 (feat.Retrofit) 3편 (0) | 2021.11.11 |
FCM 토큰 이용해서 상대방에게 메세지 날리기 (feat.Retrofit) 2편 (0) | 2021.11.10 |
FCM 토큰 이용해서 상대방에게 메세지 날리기 (feat.Retrofit) 1편 (0) | 2021.11.09 |