[코틀린] 고도용 안드로이드 플러그인 CameraX 기능파악을 위한 앱 실습 codelabs

처음에 ai활용해서 막 해봤는데 빌드해서 고도apk빌드해서 확인하니까 실행하다가 꺼져버린다 ㅠㅠ

 가이드보니까

코드랑 다 잘되어있는데

뭘 어떻게 써야 고도엔진에 기능을 전달할지도 모르겠다. 

일단 가이드대로 앱을 만들어서 휴대폰에서 사용해보고 toast?라는 텍스트 출력함수도 알고 있으니까

출력으로 테스트 해보려한다.

https://developer.android.com/codelabs/camerax-getting-started?hl=ko#3

가이드가 잘되어있음.

그냥 복붙만해도 될 듯..ㄷ


음 나 구형폰인데 안드로이드 9 ㅠㅠ

 안드로이드 10부터하는거 추천하넹..


내가 사용할 기능은 이거다 실시간 프레임 분석 이걸넘기고
opencv를 활용해서 물체 감지 이동을 판단할건데 그걸로 게임만들어서 내가 사용할거임.
일단 해보장 ㄱㄱ
그냥 뭐 하라는데로 하면될 듯 진행중..

레이아웃폴더랑 xml파일이란게 없어서 만들어줌.



이걸로 하라고했는데
이게 아닌가?;;
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
레이아웃 종속성이 없어서 오류남
 추가해줌. 오류사라짐

MainActivity.kt 설정

  1. MainActivity.kt의 코드를 다음 코드로 바꿉니다. 단, 패키지 이름은 그대로 둡니다. 여기에는 import 문, 인스턴스화할 변수, 구현할 함수, 상수가 포함됩니다.

카메라 권한을 확인하고, 카메라를 시작하고, 사진 및 캡처 버튼의 onClickListener()를 설정하고, cameraExecutor를 구현할 수 있도록 onCreate()가 이미 구현되어 있습니다. onCreate()가 구현되어 있어도 파일에서 메서드를 구현할 때까지는 카메라가 작동하지 않습니다.



이것도 타겟 버전이 안맞아서 수정해줌 ai가 도움된당.
agp = "8.2.2" kotlin = "1.9.0" coreKtx = "1.12.0" junit = "4.13.2" junitVersion = "1.1.5" espressoCore = "3.5.1" lifecycleRuntimeKtx = "2.6.2" activityCompose = "1.8.2" composeBom = "2023.08.00" appcompat = "1.6.1"

타겟 sdk34 로 카탈로그 맞춰줌.

안드로이드 스튜디오로 앱빌드는 처음해봄 성공뜸.
이게 build쪽에 apk파일로 있을 것같은데 
설치해서확인해봄.

음 역시 있군 설치 ㄱㄱ
아 서명안했구나 안드로이드 스튜디오로 서명하는법을 알아야하넹;;
요고 진행하면되고


이걸로 adb설치가 되는구낭 ㅇㅎ
아 중단되넹

아 sdk가 최신버전기준으로 되어있는데 난 34타겟이니까
theme이란 것도 34로 바꿔주어야함 ㅠㅠ
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.CameraXApp" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Material3 테마 적용 -->
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
</style>
</resources>
이걸로 value-theme.xml 파일 바꿔주고 

종속성 부여
implementation 'com.google.android.material:material:1.11.0'


실행되고
창도 뜨는데
이제는 권한 뭐시기가 뜨넹
아 카메라함수를 작성안해서 저기까지만 실행되고 꺼지는 것 같다...
가이드 다음으로 진행

permisisions not granted by the user
아.. max를 min으로 봄 -ㅅ- 하..ㅠㅠ
24였는데
34로 고쳐줌 ㅠㅠ
어쩐지... 저장소 권한은 안뜨더라..


저장소 권한도 뜸 

카메라 실시간화면등장


좋아... 잘된다...
좋아 남은 것도 클리어하고 고도엔진에서 불러오고 확인만하면된다!!

안드로이드 스튜디오는 호환성 버전만 잘 맞추면 크게 무리없는 듯.
기능이랑 문법은 잘몰라서 좀 찾아봐야겠다.
toast출력으로 고도엔진에서 확인하려면 좀 걸릴 듯..


take photo구현해서 사진찍으니까 저장도되는데
다 0b라 읽을 수가 없다.



<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
읽기 권한 추가하니까 읽을 수 있음.

<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />



이건 안드로이드 13부터 쓰인단다.
출시목적이니까 추가꼭해야할 듯.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-feature android:name="android.hardware.camera.any" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="34" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.CameraXApp">
<activity
android:name=".MainActivity"
android:exported="true"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>


안드로이드 매니페스트 이렇게 작성함.

ImageAnalisys도 구현 후 테스트하니 
가이드 말대로 로그캣에 계속 1초마다(1초는 아닌듯 더 빠름) 찍힌다.




그렇구만 
내가 원하는 기능은 일단 이건데.
대충 어떤 방식인지 알것 같다. 코드 내용은 전부 잘 알지는 못하겠지만 ㅎㅎ; ㅠ
대충 흐름은 알 것 같다.


동영상 캡쳐 기능까지 구현.
라이프 사이클? 여기에 해당하는 변수값을 매개변수로 넣으면 작동을 하는데
이미지 저장은 고품질인지 느리게 저장된당.

사진을 빨리 저장하는 방법을 알려주는데
일단 나는 이기능은 안쓰니까 패스...

이게 기기마다 지원하는게 다른 것 같은데 위 링크에서 확인 할 수 있다고 한다.

봐도 잘 모르겠음.
아 같이 쓰면안되는구나...
analyzer는 쓰면 성능문제가 있넹.

빼고 사용하고 사진도 찍어봤는데
사진캡쳐는 좀 느리다. 
동영상캡쳐는 저장도 빠른데..

일단 필요한 기능은 알아봄. 이걸 고도엔진에서 ui로 인풋받고 기능 사용할 수 있는지 봐야겠다.
미리보기 화면은 그럼 어떻게 하지;;?

댓글

이 블로그의 인기 게시물

일시정지에서 특정 노드만 사용되게 하고 싶다면 get_tree().paused=false

cpp 작업을 위한 비쥬얼스튜디오에서 고도프로젝트 열기