기존에 자바로 만들어놓은 테스트용 코드를

코틀린으로 마이그레이션하는데 한참 고민하다가

이것저것 하다보니 성공해서 올려놓음.

 

onclosewindow, createwindow 다 적용가능

 

1. onCretae내부선언

binding.mWebView.setWebViewClient(WebViewClient())
binding.mWebView.setWebChromeClient(webChromeClient())
binding.mWebView.postUrl(getText(R.string.URL).toString(), postData.toByteArray())

2. inner class 정의 (feat. Volley) 

inner class webChromeClient : WebChromeClient() {
        override fun onConsoleMessage(consoleMessage: ConsoleMessage?): Boolean {
            consoleMessage?.apply {
                Log.d("webviewMsg3", "${message()} -- From line ${lineNumber()} of ${sourceId()}")
                if (message() == getText(R.string.errMsg1).toString() || message() == getText(R.string.errMsg2).toString()) {
                    val queue = Volley.newRequestQueue(this@CertiWebView)
                    queue.add(jsonArrayRequest)

                    val intent = Intent(this@CertiWebView, CarAddActivity::class.java)
                    startActivity(intent)
                }
            }
            return true
        }
        override fun onJsAlert(view: WebView, url: String, message: String, result: JsResult): Boolean {
            if(message == getText(R.string.okMsg).toString()) {

            }


            Log.d("webViewMsgJS4", message)
            result.cancel()
            return true
        }
    }

 

onConsoleMessage 는 시스템 에러 메세지를 제공하고

onJsALert는 개발자가 사용자에게 제공하는 메세지를 출력하는거임.

 

 

+++ 참고 

웹뷰 액티비티에서 정상종료 직전에 Volley 통신을 하려고 했었는데,

너무 복잡한것 같아서 별도 액티비티로 이동하여 처리하기로 함.

Volly 관하여 게시물 있으니 궁금하면 참고가능

2022.02.14 - [안드로이드[Java | Kotlin]] - [Java/Kotlin] volley Request POST값 전달 (Stringrequest, JSONrequest)

 

 

 

이거 맨날 까먹어서 올려놓음

 

Kotlin Ver.

fun getHashKey() {
    var packageInfo: PackageInfo? = null
    try{
        packageInfo = packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES)
    } catch (e: PackageManager.NameNotFoundException) {
        e.printStackTrace()
    }
    if (packageInfo == null) {
        Log.d("hashKey", "null")
    }
    packageInfo?.signatures?.forEach {
        try {
            val md = MessageDigest.getInstance("SHA")
            md.update(it.toByteArray())
            Log.d("hashKey", Base64.encodeToString(md.digest(), Base64.DEFAULT))
        } catch (e: NoSuchAlgorithmException) {
            e.printStackTrace()
            Log.e("KeyHash", "Unable to get MessageDigest. signature=$it", e)
        }
    }
}

Java Ver.

private fun getHashKey() {
    var packageInfo: PackageInfo? = null
    try {
        packageInfo = packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES)
    } catch (e: PackageManager.NameNotFoundException) {
        e.printStackTrace()
    }
    if (packageInfo == null) Log.e("KeyHash", "KeyHash:null")
    for (signature in packageInfo!!.signatures) {
        try {
            val md: MessageDigest = MessageDigest.getInstance("SHA")
            md.update(signature.toByteArray())
            //Log.d("KeyHash", Base64.encodeToString(md.digest(), Base64.DEFAULT))
            ILog.iLogDebug("KeyHash", Base64.getEncoder().encodeToString(md.digest()))
        } catch (e: NoSuchAlgorithmException) {
            ILog.iLogDebug("KeyHash", "Unable to get MessageDigest. signature=$signature")

        }
    }

}

어플리케이션 SHA-1 인증서

Gradle >>코끼리 >> gradle signingReport >> 엔터 >> run창 확인

 

2022.02.04 - [임베디드[C | Python]] - [라즈베리파이] pip3 install killed

2022.02.04 - [임베디드[C | Python]] - [라즈베리파이] Mediapipe 활용해서 opencv 설치하기

하루종일 삽질하다가 여기까지왔네..

 

라즈베리파이 제로는 opencv 4.x 랑 호환이 어쩌니저쩌니 하는 글을 봤음

아 설마하면서 3.x버전중에 최신버전으로 직접 명시해서 설치해봄.

 

sudo pip3 install opencv=python==3.4.17.61

 

바로 됨..ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

이건 그냥 '라즈베리파이제로'라서 그랬던거

 

아그리고 이전에 설치할때는 캐시사용을 무시하는 옵션(--no-cache-dir)을 썻는데

설정으로 저장공간을 메모리대신 사용하는 것도봐서 같이올려놓음.

 

sudo nano /etc/dphys-swapfile

CONF_SWAPSIZE = 100  =>  CONF_SWAPSIZE = 2048

sudo /etc/init.d/dphys-swapfile restart

 

다하면 역순으로 마무리.

혹시모름 이거해서 빨리됬는지도 모르지

 

/////////////////////////////////////////////////////////////////////////////////////////////

근데 다음 문제가 생겼음.. 허허

ImportError: numpy.core.multiarray failed to import 에러가 나옴.

numpy랑 opencv버전이 달라서 그런거라 numpy업데이트가 필요함

opencv처럼 무한설치중임

 

pip3 install numpy --upgrade

 

그냥 제로에서는 opencv 사용하면 안되겠다는 생각이 들었음.

 

완전 하나부터 열까지 일일이 설치하는 링크를 찾긴해서

나중에 시도해보는걸로.. 

 

https://bebutae.tistory.com/194?category=965992 

 

OpenCV[2] - 라즈베리파이'제로'에 opencv설치하기

안녕하세요. 오늘은 라즈베리파이 제로에 OpenCV를 설치해보겠습니다. 1. 개요 기존 OpenCV설치 포스팅은 라즈베리파이4에서는 가능하지만 라즈베리파이제로에서는 적용되지 않는다는 제보를 받았

bebutae.tistory.com

 

2022.02.04 - [임베디드[C | Python]] - [라즈베리파이] pip3 install killed

여기서 삽질 좀 하다가 넘어왔다.

 

pip3 install opencv-python --no-cache-dir

killed가 발생하는 오류는 넘어가길래

오 됬네하고 기다리고 있었지ㅋㅋ

 

근데 셋업과정에서 도저히 진행이 안되더라

화살표가 뱅뱅 돌아가는데 1-2분에 한번..?

이건아니다 싶어서 라즈베리 3B에다가  sd카드 옮겨서 설치하려고 했음.

 

옵션없이 잘넘어가길래 진작에 이래할걸 싶었는데..

여기도 피차 마찬가지였음. 1시간 넘게 기다림. 너무 오래걸림.

기존에 심어놓은 프로그램이랑 뭐 충돌났나?

모르겠다..

 

그래서 Mediapipe 패키지에 담겨있는 opencv 써서 설치하고있다.

 

 

Mediapipe >> 비디오나 오디오같은 데이터를 처리할 수 있게 오픈소스 플랫폼으로 만들어놓은 패키지

 

sudo apt-get update

sudo apt-get upgrade

cd~

sudo git clone https://github.com/google/mediapipe.git 

cd mediapipe

cd ~/mediapipe

sudo chmod +x setup_opencv.sh

./setup_opencv.sh

 

이렇게하면 필요없는 패키지도 같이 설치되서 

저장공간이 낭비될것 처럼 보이긴함.

 

이 방법 쓸일이 많이 없을것 같지만,

그래도 정안되면 이런식으로도 설치할수 있구나를 알게되었음.

 

///////////////////////////////

왜인지 모르겠는데

2번째 시스템이 다운됬음.

어디서 부터 손대야할지...HA

 

2022.02.04 - [임베디드[C | Python]] - [라즈베리파이] opencv 설치 오류 해결함

 

+ Recent posts