반응형 Android22 [Android] OkHttp로 Whisper api의 STT(Speech-to-text) 구현하기 OpenAi사의 whisper api를 사용하는 android sample app을 만들고 있는데 http 통신으로 요청을 하고 응답을 받아야 한다. 기존에 android에서 HTTP client를 구현할 때 HttpURLConnection이나 Apache HTTP Client를 사용했다. 다만 이 방법들은 AsyncTask나 background thread 안에 많은 복잡한 정해진 코드들을 구성해야 하는 단점이 있었다. 그런데 이번에 OkHttp를 사용해서 구현을 해보니 훨씬 간편하게 구현을 할 수가 있었다. 공식 사이트 : square.github.io/okhttp 깃허브 : github.com/square/okhttp OkHttp 구현 먼저 android의 build gradle의 dependenc.. 2023. 10. 21. [Android] 앱 버전 관리하기 안드로이드용 앱 개발을 하다보면 버전 관리를 해야 한다. 그렇지 않으면 잘못된 버전을 전달할 수도 있고, 이미 수정을 해놓고 문제있는 버전을 전달할 수도 있다. 안드로이드 앱의 버저닝(Versioning)은 시맨틱 버저닝(Semantic Versioning) 방식을 주로 따른다. 1. 기존 버전과 호환되지 않게 큰 기능이 추가 되었으면 MAJOR 버전을 올린다. 2. 기존 버전과 호환되면서 새 기능이 추가 되었으면 MINOR 버전을 올린다. 3. 기존 버전과 호환되면서 버그를 수정한 것이라면 PATCH 버전을 올린다. Android에서는 versionCode와 versionName이 있다. versionCode는 Google Play Store에서 apk 버전의 업데이트를 알리는 용도로 사용한다. 즉, .. 2023. 10. 14. [Android] LinearLayout을 사용해서 화면을 일정 비율로 3등분하기 Sample app을 만들고 있는데 화면을 3등분 하려고 한다. 정확히 동일한 가중치로 나누지는 않고 중간에 본문은 좀 많이 할당을 하고, 상단과 하단은 조금 적게 할당을 하고 싶었다. 비율로 따지자면 1:3:1 정도? LinearLayout에 weightSum을 사용하면 된다. 나는 LinearLayout 안에 LinearLayout을 추가해서 layout_weight를 사용했다. 전체 LinearLayout에 weightSum = 500을 주고 그 밑으로 layout_weight = 100, 300, 100을 주면 된다. 전체 코드를 보면 결과 화면은 다음과 같다. 2023. 10. 14. [Android] webView 사용하기 최근들어 실무에서 안드로이드 앱을 사용할 일(샘플앱을 구현해서 feasibility 확인)이 많아져서 차근차근 살펴보고 있는데 드디어 webView가 나왔다. 이런저런 상황에서 언제나 webView로 화면을 띄운다는 등 말들이 나와서 궁금했던 차에 잘 되었다 싶었다. 그냥 activity_main.xml에서 만 설정해 주면 되는 것이었다. 이렇게 간단하다고? 진작에 앱 공부 좀 해놓을 것을 그랬다. 1. activity_main.xml WebView 항목을 추가해준다. 2. MainActivity.java package com.example.webviewexample; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; i.. 2023. 10. 2. [Android] webView 사용 시 ERR_CLEARTEXT_NOT_PERMITTED 에러 앱에서 webView를 사용해서 네이버를 띄우는 간단한 프로그램인데 에러가 발생했다. 찾아보니 안드로이드 Pie 버전 이상부터 보안이 강화가 되면서 발생한 문제였다. 지금 내가 AVD에 사용한 것이 api 31이니 해당이 되는 문제였음. 검색해보니 여러가지 해결방법이 있었으나 그 중 가장 간단한 것으로 적용해봄. * AndroidManifest.xml에 usesCleartextTraffic 속성 추가 android:usesCleartextTraffic="true" ... 2023. 10. 2. [Android] SharedPreferences를 이용해서 임시 데이터 저장하기 앱을 작성하다보면 굳이 DB까지 사용할 정도로 데이터 양이 많지는 않지만 앱이 종료 되어도 값이 저장이 될 경우가 필요한 시나리오가 있다. (예를 들면, switch를 이용한 값을 변경했을 때 다시 앱을 실행해도 그 값이 그대로 적용이 되어야 하는 경우) EditCtrl을 하나 만들어서 거기에 입력된 값이 앱이 종료 후 재실행 되어도 그대로 저장이 되어 있도록 구현해 보자. UI 상으로는 입력된 값이 EditCtrl에 그대로 남아 있는 것처럼 보이지만 사실은 앱이 종료될 때 SharedPreferences에 저장을 했다가 재실행 될때 그 값을 읽어서 다시 EditCtrl에 뿌려주는 것이다. 1. activity_main.xml에 EditCtrl 생성 2. MainActivity 설정 package com.. 2023. 10. 2. [Android] ListView 구성하기 안드로이드로 테스트 앱을 만들 때 가장 많이 사용하는 듯. 화면의 리스트를 구성하고 그 리스트를 누르면 테스트할 기능이 실행되는 형태이다. 1. Layout 구성 LinearLayout을 vertical로 설정하고 그 아래에 ListView를 구성했다. 2. MainActivity.java 설정 package com.example.listexample01; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView; import java.util.ArrayList; import java.util.List; pub.. 2023. 10. 1. [Android] ImageView를 누르면 Toast 메시지 띄우기 간단한 예제이다. 화면에 이미지를 표시하고, 그 이미지를 선택(터치, 클릭)하면 간단한 토스트 메시지를 띄우도록 한다. 1. Layout 구성 이미지의 정렬(gravity 속성)을 사용하기 위해 LinearLayout으로 ImageView를 둘러싸 주었다. 2. 이미지를 누르면 토스트를 띄우는 코드 package com.example.edittext; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.provider.ContactsContract; import android.view.View; import android.widget.Button; import android.widget.EditT.. 2023. 10. 1. [Android] Intent로 다른 Activity 호출하기 액티비티에서 버튼이나 메뉴를 누르면 다른 액티비티를 호출해서 이동해야 하는 경우가 있다. 안드로이드 앱을 개발하다보면 상당히 자주 사용해야 하는 기법이다. 1. 부모 액티비티의 layout을 입력창과 버튼으로 구성한다. 2. MainActivity.java에 EditText와 Button을 연결해준다. package com.example.intentexample; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText;.. 2023. 9. 30. 이전 1 2 3 다음 반응형