Kotlin에서 QR 코드를 표시하는 Android 앱 만들기
13117 단어 AndroidStudioQRcodeNEMZXingKotlin
라고 생각 최근 여러가지 찾고 있는 나날입니다.
이번에는 Android에서 QR 코드를 표시하는 앱을 만들고 싶습니다.
개발 환경은 다음과 같습니다.
OS:macOS HighSierra
AndroidStudio:v3.1.1
Android OS:Opera v8.0.0
Language:Kotlin
사양으로는
数字
를 입력하고 Button
를 누르면 그에 따른 QR 코드를 생성한다는 것입니다.도서관
QR 코드를 만들기 위해 Zxing
라는 라이브러리를 사용하기 때문에build.gradle
에 추가합니다.
AndroidStudio 버전에 따라 라이브러리를 호출하는 방법이 다르므로 환경에 따라 변경하십시오.
v3.0 이상 -> implementation
그 이전 -> compile
build.gradle...
dependencies {
...
implementation 'com.journeyapps:zxing-android-embedded:3.6.0'
}
레이아웃
이번에 사용한 것은 ImageView, EditText, Button의 3 종류입니다.
자신의 취향에 배치하십시오.
activity_main.xml ...
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:layout_marginBottom="91dp"
android:layout_marginEnd="44dp"
android:layout_marginStart="5dp"
android:layout_marginTop="60dp"
android:text="TAP"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/editText"
app:layout_constraintTop_toBottomOf="@+id/imageView" />
<ImageView
android:id="@+id/imageView"
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_marginBottom="60dp"
android:layout_marginEnd="44dp"
android:layout_marginStart="40dp"
android:layout_marginTop="40dp"
app:layout_constraintBottom_toTopOf="@+id/button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@mipmap/ic_launcher_round" />
<EditText
android:id="@+id/editText"
android:layout_width="200dp"
android:layout_height="60dp"
android:layout_marginBottom="51dp"
android:layout_marginEnd="5dp"
android:layout_marginStart="47dp"
android:layout_marginTop="93dp"
android:ems="10"
android:inputType="number"
android:text="100"
android:textSize="30sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView" />
</android.support.constraint.ConstraintLayout>
본문
MainActivity.kt...
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val button = findViewById<Button>(R.id.button)
val editText = findViewById<EditText>(R.id.editText)
button.setOnClickListener(){
generateQR(editText.getText().toString())
}
}
private fun generateQR(text: String){
val format = BarcodeFormat.QR_CODE
val width = 1000
val height = width
val hint = HashMap<EncodeHintType, Any>()
hint.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M)
hint.put(EncodeHintType.MARGIN, 0)
val barcode = BarcodeEncoder()
val bitmap = barcode.encodeBitmap(text, format, width, height, hint)
val imageViewQRCode = findViewById<ImageView>(R.id.imageView)
imageViewQRCode.setImageBitmap(bitmap)
}
}
완제품
이런 느낌의 것이 완성됩니다.
EditText
의 android:inputType
를 변경하면 문자 입력에도 대응할 수 있습니다.
덤
표시 내용을 다음과 같이 하면 NanoWallet로 읽을 수 있습니다.
MainActivity.kt ...
private fun generateQR(text: String){
...
val address = "wallet address"
val value = 1000000 * text.toInt()
val message = "message"
val wallet_name = "wallet_name"
var data = "{\"v\":2,\"type\":2,\"data\":{" +
"\"addr\":\"" + address+
"\",\"amount\":" + value.toString() +
",\"msg\":\""+ message +
"\",\"name\":\"" + wallet_name + "\"}}"
...
val bitmap = barcode.encodeBitmap(text, format, width, height, hint)
...
Reference
이 문제에 관하여(Kotlin에서 QR 코드를 표시하는 Android 앱 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/miya839/items/03f01d4c8f593bafad8a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
...
dependencies {
...
implementation 'com.journeyapps:zxing-android-embedded:3.6.0'
}
이번에 사용한 것은 ImageView, EditText, Button의 3 종류입니다.
자신의 취향에 배치하십시오.
activity_main.xml
...
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:layout_marginBottom="91dp"
android:layout_marginEnd="44dp"
android:layout_marginStart="5dp"
android:layout_marginTop="60dp"
android:text="TAP"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/editText"
app:layout_constraintTop_toBottomOf="@+id/imageView" />
<ImageView
android:id="@+id/imageView"
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_marginBottom="60dp"
android:layout_marginEnd="44dp"
android:layout_marginStart="40dp"
android:layout_marginTop="40dp"
app:layout_constraintBottom_toTopOf="@+id/button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@mipmap/ic_launcher_round" />
<EditText
android:id="@+id/editText"
android:layout_width="200dp"
android:layout_height="60dp"
android:layout_marginBottom="51dp"
android:layout_marginEnd="5dp"
android:layout_marginStart="47dp"
android:layout_marginTop="93dp"
android:ems="10"
android:inputType="number"
android:text="100"
android:textSize="30sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView" />
</android.support.constraint.ConstraintLayout>
본문
MainActivity.kt...
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val button = findViewById<Button>(R.id.button)
val editText = findViewById<EditText>(R.id.editText)
button.setOnClickListener(){
generateQR(editText.getText().toString())
}
}
private fun generateQR(text: String){
val format = BarcodeFormat.QR_CODE
val width = 1000
val height = width
val hint = HashMap<EncodeHintType, Any>()
hint.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M)
hint.put(EncodeHintType.MARGIN, 0)
val barcode = BarcodeEncoder()
val bitmap = barcode.encodeBitmap(text, format, width, height, hint)
val imageViewQRCode = findViewById<ImageView>(R.id.imageView)
imageViewQRCode.setImageBitmap(bitmap)
}
}
완제품
이런 느낌의 것이 완성됩니다.
EditText
의 android:inputType
를 변경하면 문자 입력에도 대응할 수 있습니다.
덤
표시 내용을 다음과 같이 하면 NanoWallet로 읽을 수 있습니다.
MainActivity.kt ...
private fun generateQR(text: String){
...
val address = "wallet address"
val value = 1000000 * text.toInt()
val message = "message"
val wallet_name = "wallet_name"
var data = "{\"v\":2,\"type\":2,\"data\":{" +
"\"addr\":\"" + address+
"\",\"amount\":" + value.toString() +
",\"msg\":\""+ message +
"\",\"name\":\"" + wallet_name + "\"}}"
...
val bitmap = barcode.encodeBitmap(text, format, width, height, hint)
...
Reference
이 문제에 관하여(Kotlin에서 QR 코드를 표시하는 Android 앱 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/miya839/items/03f01d4c8f593bafad8a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
...
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val button = findViewById<Button>(R.id.button)
val editText = findViewById<EditText>(R.id.editText)
button.setOnClickListener(){
generateQR(editText.getText().toString())
}
}
private fun generateQR(text: String){
val format = BarcodeFormat.QR_CODE
val width = 1000
val height = width
val hint = HashMap<EncodeHintType, Any>()
hint.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M)
hint.put(EncodeHintType.MARGIN, 0)
val barcode = BarcodeEncoder()
val bitmap = barcode.encodeBitmap(text, format, width, height, hint)
val imageViewQRCode = findViewById<ImageView>(R.id.imageView)
imageViewQRCode.setImageBitmap(bitmap)
}
}
이런 느낌의 것이 완성됩니다.
EditText
의 android:inputType
를 변경하면 문자 입력에도 대응할 수 있습니다.덤
표시 내용을 다음과 같이 하면 NanoWallet로 읽을 수 있습니다.
MainActivity.kt ...
private fun generateQR(text: String){
...
val address = "wallet address"
val value = 1000000 * text.toInt()
val message = "message"
val wallet_name = "wallet_name"
var data = "{\"v\":2,\"type\":2,\"data\":{" +
"\"addr\":\"" + address+
"\",\"amount\":" + value.toString() +
",\"msg\":\""+ message +
"\",\"name\":\"" + wallet_name + "\"}}"
...
val bitmap = barcode.encodeBitmap(text, format, width, height, hint)
...
Reference
이 문제에 관하여(Kotlin에서 QR 코드를 표시하는 Android 앱 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/miya839/items/03f01d4c8f593bafad8a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
...
private fun generateQR(text: String){
...
val address = "wallet address"
val value = 1000000 * text.toInt()
val message = "message"
val wallet_name = "wallet_name"
var data = "{\"v\":2,\"type\":2,\"data\":{" +
"\"addr\":\"" + address+
"\",\"amount\":" + value.toString() +
",\"msg\":\""+ message +
"\",\"name\":\"" + wallet_name + "\"}}"
...
val bitmap = barcode.encodeBitmap(text, format, width, height, hint)
...
Reference
이 문제에 관하여(Kotlin에서 QR 코드를 표시하는 Android 앱 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/miya839/items/03f01d4c8f593bafad8a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)