반응형

우선이 기능을 제공해주는 것은 유료임... 

 

1. Slack Workspace 생성 

 

2. Workspace Name Click > 설정 및 관리 > "워크 스페이스" 설정 클릭 

 

3. Slack TestRoom 웹페이지로 > 왼쪽 카테고리 "앱 구성" 클릭

 

4. 우측 상단 "앱 디렉터리 검색" > ReviewBot 검색

 

5. 하단 ReviewBot 셀 클릭

 

6. 화면 이동이 될텐데 거기에 좌측 중앙에 자세히 알아보기 클릭. 

 

7. 리뷰봇 사이트로 이동

-----------------------

8. 평가판 시작 클릭

9.

작성... 

 

10. 작성완료 후 시작을 누르거나 화면 이동이 될것임. 

Add new Flow 클릭하여 간단한 인터페이스 조작으로 설정가능. 

 

....생략 

 

결론은 유료임  

 

내가 만들던가... 쓰던가 해야겠다 ㅋㅋ..

반응형
반응형
companion object {
    private val alg: String = "AES/CBC/PKCS5Padding"
    private val key: String by lazy {
        "your key".substring(0, 16)
    }

    private fun setCipher (mode: Int): Cipher {
        val cipher = Cipher.getInstance(alg)
        cipher?.init(
            mode,
            SecretKeySpec(key.toByteArray(), "AES"),
            IvParameterSpec(key.toByteArray())
        )
        return cipher!!
    }

    fun encrypt(text: String): String {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            return Base64.getEncoder()
                .encodeToString(
                    setCipher(Cipher.ENCRYPT_MODE).doFinal(text.toByteArray())
                )
        }
        return ""
    }

    fun decrypt(encryptText : String): String {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            return String(
                setCipher(Cipher.ENCRYPT_MODE).doFinal(Base64.getDecoder().decode(encryptText))
            )
        }
        return ""
    }

진행중 ...

반응형
반응형

이미지 저장 후 캘린더에 추가 하는 작업인데

아래 코드는 API 29 부터 사용할 수 없음. 

Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE).also { mediaScanIntent ->
    mediaScanIntent.data = Uri.fromFile(file)
    sendBroadcast(mediaScanIntent)
}

 

 

그러므로 아래와 같이 처리.. 

다른방법도 많은걸로 알고있음..

 

MediaScannerConnection.scanFile(
    applicationContext,
arrayOf(file.path),
null
) { path, uri ->
    //TODO
}

 

반응형

'IT 이야기 > 2022_Android 이것저것' 카테고리의 다른 글

kotlin AES 암복호화  (0) 2022.12.15
느린 렌더링 (버벅거림 )  (0) 2022.09.21
Android Studio SamSung RemoteTestLab 이용하기.  (0) 2022.07.21
Image Resize  (0) 2022.06.22
retrofit2 Get Header 추가.  (0) 2022.05.10
반응형

위 오류 나면 

URLSession을 이용해서 이미지 불러오기.

 

let defaultSession = URLSession(configuration: .default)

        

        guard let url = URL(string:str) else {

            //TODO

            return

        }

        

        //Request

        let request = URLRequest(url: url)



        //dataTask

        var dataTask: URLSessionDataTask?

        dataTask = defaultSession.dataTask(with: request) { data, response, error in



            // getting Data Error

             guard error == nil else {

                 print("Error occur: \(String(describing: error))")

                

                 return

             }

            

            if let myData = data  {

                print("myData")

              //TODO

            }

                

            DispatchQueue.main.sync {

                self.addContentScrollView()

            }

            

        }

        dataTask?.resume()
반응형
반응형

나는 보통 앱 제작을 할때 통이미지를 넣지 않다보니 

별 생각없이 해상도별 이미지를 제작하지않고 nodpi로 작업을 해왔다.

 

그런데... 

이번 멤버쉽 앱 개발건으로 통이미지를 사용을 하였는데.

각 테스트폰에서 테스트를 진행 중 특정폰에  버벅거림이 발생한것이다.

다행히? 이를 그냥 넘기지 않고 좀 알아보았다.

 

https://developer.android.com/topic/performance/vitals/render?hl=ko 

 

느린 렌더링  |  Android 개발자  |  Android Developers

느린 렌더링 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. UI 렌더링은 앱에서 프레임을 생성하여 화면에 표시하는 작업입니다. 사용자와 앱의 상호작용이

developer.android.com

 

 

https://developer.android.com/topic/performance/rendering/inspect-gpu-rendering?hl=ko#profile_rendering 

 

GPU 렌더링 속도 및 오버드로 검사  |  Android 개발자  |  Android Developers

앱에서 문제가 발생할 수 있는 위치를 시각화하는 데 도움이 되는 온디바이스 개발자 옵션을 알아보세요.

developer.android.com

 

... 공부 내용은 후에 작성하는 걸로 하고... 

일단 각 통이미지는 해상도별 분리를 좀 해주었다.

 

 

- drawable-mhdpi

      (이미지는 360 x 640 기준으로 제작된 이미지 이여야함)

- drawable-hdpi

      (이미지는 540 x 960 기준으로 제작된 이미지 이여야함)

- drawable-xhdpi

      (이미지는 720 x 1280 기준으로 제작된 이미지 이여야함)

- drawable-xxhdpi

       (이미지는 1080 x 1920 기준으로 제작된 이미지 이여야함)

- drawable-xxxhdpi

       (이미지는 1440 x 2560 기준으로 제작된 이미지 이여야함)

 

일단 방금 비슷한 문제 뿐만아니라 다른 문제도 해결할 겸 

프로파일링 방법에 대해서 작성을 해본다.. 

 

GPU 렌더링 속도 프로파일링

  1. 기기에서 설정으로 이동하여 개발자 옵션을 탭합니다.
  2. 기기에서 실행 중인 Android 버전에 따라 모니터링 섹션에서 GPU 렌더링 프로파일 또는 HWUI 렌더링 프로파일을 선택합니다.
  3. 'GPU 렌더링 프로파일' 대화상자에서 화면에 막대로 표시를 선택하여 기기의 화면에 그래프를 오버레이합니다.
  4. 프로파일링하려는 앱을 엽니다.

막대에 관련 내용은 위 링크를 통해 확인하면 될듯. 

 

GPU 오버드로 시각화

  1. 기기에서 설정으로 이동하여 개발자 옵션을 탭합니다.
  2. 하드웨어 가속 렌더링 섹션으로 스크롤하여 GPU 오버드로 디버그를 선택합니다.
  3. GPU 오버드로 디버그 대화상자에서 오버드로 영역 표시를 선택합니다.

Android에서는 다음과 같이 UI 요소에 색상을 지정하여 오버드로 횟수를 나타냅니다.

오버드로 시각화를 통해서 필요 이상으로 많은 작업의 실행을 줄일 수 있을 뿐만아니라 

위치를 알 수 있어 매우 유용할듯 하다..

좀더 공부 후 글을 다듬도록하자.

반응형
반응형

삼성에서 제공해주는 기기별로 테스트 할 수있는 방법.. 

 

*ADB 설치는 해두어야한다.

 

1.

https://developer.samsung.com/remote-test-lab/blog/en-us/2022/07/13/connect-to-devices-on-remote-test-lab-using-rdb-in-android-studio

 

Connect to Devices on Remote Test Lab Using RDB in Android Studio

Use Remote Debug Bridge (RDB) to test and debug applications in Android Studio over an adb connection to a real device on Remote Test Lab.

developer.samsung.com

 

가이드 라인인데 잘 따라하면 잘될수도있는데 나는 좀 해맸음.

여튼 순서대로 잘 따라하고나서....

잘되면 그냥 하면되고.. 안되면 2번 을 봐야함.

 

2. 

https://developer.samsung.com/remotetestlab/deviceList.action

 

Galaxy Mobile - Remote Test Lab - Samsung Developers

 

developer.samsung.com

위 URL 로그인 후 원하는 기기 선택 

 

Location / Duration을 설정해주면 됨.

3. RDB 실행한다. adb Path 는 알아서

가이드 설명대로 Remote Debug Bridge 눌러주면 

당연 Connect가 안될것임..

 

그러면 다음과같이 .. 

4.source .bash_profile 

5.adb

6.adb connect locahost:<RDB SERVER listening on prot >    /  RDB실행하면  얻는 포트 

adb에서 connect 실행하면 위 이미지 처럼 뜸

 

7. rdb에서 connect가 완료되면 RemoteDebug Bridge에 Connect를 눌러주면 연결됨.

Remote Debug Bridge 눌러주면 처음에 Connect 뜰꺼다.

8.Android Studio에서 기기가 잡힌다.

9. 실행. 

이제 다양한 폰으로 테스트 하면됨

-어디까지 지원하는지는 파악이 안됨. 

 

*단점 - 좀 느리다. 

반응형

'IT 이야기 > 2022_Android 이것저것' 카테고리의 다른 글

ACTION_MEDIA_SCANNER_SCAN_FILE -> deprecated  (0) 2022.12.07
느린 렌더링 (버벅거림 )  (0) 2022.09.21
Image Resize  (0) 2022.06.22
retrofit2 Get Header 추가.  (0) 2022.05.10
AlertDialog.Builder Text 조절  (0) 2022.04.14
반응형
private fun resizeBitMap(uri: Uri, resize: Int): Bitmap? {
    var resizeBitmap: Bitmap? = null
    val ratioTemp = 2

    val options = BitmapFactory.Options()
    try {
        BitmapFactory.decodeStream(
            applicationContext.contentResolver.openInputStream(uri),
            null,
            options
        )
        var width = options.outWidth
        var height = options.outHeight
        var sampleSize = 1

        while (true) {
            if (width / ratioTemp < resize || height / ratioTemp < resize) break

            width /= ratioTemp
            height /= ratioTemp
            sampleSize *= ratioTemp
        }

        options.inSampleSize = sampleSize
        val bitmap = BitmapFactory.decodeStream(
            applicationContext.contentResolver.openInputStream(uri),
            null,
            options
        )
        resizeBitmap = bitmap

    } catch (e: FileNotFoundException) {
        e.printStackTrace()
    }

    return resizeBitmap
}
반응형
반응형

@Header 어노테이션 

 

1. 헤더 어노테이션을 추가하여 전송.

 

interface api {

@GET("/api/itemlist")

  fun itemList(

  @Header("token") token: String?,

  @Query("wid") wid : Int ): Call<List<ItemListResponseData>>

}

 

 

 

2. Interceptor를 이용하여 전송 

https://blog.codavel.com/how-to-create-an-http-interceptor-for-an-android-app-using-okhttp3

class AppInterceptor : Interceptor {

@Throws(IOException::class)

override fun intercept(chain: Interceptor.Chain) : Response = with(chain) {

                 val newRequest = request().newBuilder()

                .addHeader("(Key)", "(Value)")

                .build()

 

                proceed(newRequest)

   }

}

 

 

반응형
반응형

<style name="AlertDialogTheme" parent="android:Theme.Dialog">

    <item name="android:textSize">14sp</item>

</style>

 

 

ContextThemeWrapper cw = new ContextThemeWrapper( this, R.style.AlertDialogTheme );

AlertDialog.Builder b = new AlertDialog.Builder(cw);



출처: https://ondestroy.tistory.com/entry/AlertDialogBuilder-안에-텍스트-사이즈-조절하기 [OnCreate]

반응형
반응형

사진 저장 후 바로 보여지지가 않음.. 

해당 브로드캐스트를 호출 함으로써 갤러리에 업데이트를 할 수 있다. 

 

 

 

https://shinyongchul.tistory.com/91

 

ACTION_MEDIA_SCANNER_SCAN_FILE -> deprecated

이미지 저장 후 캘린더에 추가 하는 작업인데 아래 코드는 API 29 부터 사용할 수 없음. Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE).also { mediaScanIntent -> mediaScanIntent.data = Uri.fromFile(file) sendBroadcast(mediaScanInten

shinyongchul.tistory.com

 

반응형

+ Recent posts