From e3617554ef767ad74a5f35b8e283643cf45b174e Mon Sep 17 00:00:00 2001 From: Arnan Dwika Diasmara Date: Tue, 26 Nov 2019 15:51:42 +0700 Subject: [PATCH 1/2] generate berhasil, baru data tanggal, msh ada bug --- E_Parking/app/build.gradle | 6 +- E_Parking/app/google-services.json | 48 ++++++++++++++ E_Parking/app/src/main/AndroidManifest.xml | 3 +- .../com/example/e_parking/MainActivity.kt | 27 ++++---- .../example/e_parking/Pembayara_Activity.kt | 63 +++++++++++++++++++ .../com/example/e_parking/scan_Activity.kt | 3 +- .../main/res/layout/activity_pembayara_.xml | 32 +++++----- E_Parking/app/src/main/res/values/colors.xml | 2 + E_Parking/build.gradle | 1 + 9 files changed, 153 insertions(+), 32 deletions(-) create mode 100644 E_Parking/app/google-services.json diff --git a/E_Parking/app/build.gradle b/E_Parking/app/build.gradle index 966d77a..a79c504 100644 --- a/E_Parking/app/build.gradle +++ b/E_Parking/app/build.gradle @@ -3,13 +3,14 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'com.google.gms.google-services' android { compileSdkVersion 29 buildToolsVersion "29.0.2" defaultConfig { applicationId "com.example.e_parking" - minSdkVersion 17 + minSdkVersion 26 targetSdkVersion 29 versionCode 1 versionName "1.0" @@ -29,10 +30,13 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.0.2' implementation 'androidx.core:core-ktx:1.0.2' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + implementation 'com.google.firebase:firebase-auth:16.0.5' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' implementation 'me.dm7.barcodescanner:zxing:1.9' implementation 'com.google.android.gms:play-services-vision:15.0.0' implementation 'com.android.support:appcompat-v7:26.0.0-alpha1' + implementation 'androidmads.library.qrgenearator:QRGenearator:1.0.3' + implementation 'com.google.zxing:core:3.2.1' } diff --git a/E_Parking/app/google-services.json b/E_Parking/app/google-services.json new file mode 100644 index 0000000..aa3c992 --- /dev/null +++ b/E_Parking/app/google-services.json @@ -0,0 +1,48 @@ +{ + "project_info": { + "project_number": "541470592695", + "firebase_url": "https://eparking-2842f.firebaseio.com", + "project_id": "eparking-2842f", + "storage_bucket": "eparking-2842f.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:541470592695:android:7b69777e28771cbbe2c732", + "android_client_info": { + "package_name": "com.example.e_parking" + } + }, + "oauth_client": [ + { + "client_id": "541470592695-8tuabtkusgkf4uoi32a2k2d7kqop9t1g.apps.googleusercontent.com", + "client_type": 1, + "android_info": { + "package_name": "com.example.e_parking", + "certificate_hash": "508830c67a6bf51c35f72054f964620ced744a04" + } + }, + { + "client_id": "541470592695-ld80ftbk4skq7evd7totj72g3l6f07i2.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyC_qIDC8qAAdldxZzcAIyh0I6RBUOxG1qI" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "541470592695-ld80ftbk4skq7evd7totj72g3l6f07i2.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/E_Parking/app/src/main/AndroidManifest.xml b/E_Parking/app/src/main/AndroidManifest.xml index 6cf11a9..df144ef 100644 --- a/E_Parking/app/src/main/AndroidManifest.xml +++ b/E_Parking/app/src/main/AndroidManifest.xml @@ -1,7 +1,8 @@ - + + diff --git a/E_Parking/app/src/main/java/com/example/e_parking/MainActivity.kt b/E_Parking/app/src/main/java/com/example/e_parking/MainActivity.kt index 6c8590d..dc79021 100644 --- a/E_Parking/app/src/main/java/com/example/e_parking/MainActivity.kt +++ b/E_Parking/app/src/main/java/com/example/e_parking/MainActivity.kt @@ -4,6 +4,7 @@ import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Toast +import com.google.firebase.auth.FirebaseAuth import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { @@ -13,21 +14,17 @@ class MainActivity : AppCompatActivity() { setContentView(R.layout.activity_main) btnLogin.setOnClickListener { - val username = edtUsername.text.toString(); - val password = edtPassword.text.toString(); - - if(username.isEmpty() || password.isEmpty()){ - Toast.makeText(this, "Tolong Masukkan Email and Password", Toast.LENGTH_LONG).show() - - } - if(username == "admin" && password == "admin"){ - Toast.makeText(baseContext, "login berhasil", Toast.LENGTH_LONG).show() - val i = Intent(baseContext, Home_Activity::class.java) - startActivity(i) - //setContentView(R.layout.home) - }else{ - Toast.makeText(this, "Email atau Password Salah", Toast.LENGTH_LONG).show() - } + FirebaseAuth.getInstance() + .signInWithEmailAndPassword(edtUsername.text.toString(),edtPassword.text.toString()) + .addOnSuccessListener { + Toast.makeText(baseContext, "Login Berhasil", Toast.LENGTH_LONG).show() + val i= Intent(baseContext, Home_Activity::class.java) + startActivity(i) + } + .addOnFailureListener { +// FirebaseAuth.getInstance().createUserWithEmailAndPassword(edtEmail.text.toString(), edtPassword.text.toString()) + Toast.makeText(baseContext, "Username atau password salah!", Toast.LENGTH_LONG).show() + } } diff --git a/E_Parking/app/src/main/java/com/example/e_parking/Pembayara_Activity.kt b/E_Parking/app/src/main/java/com/example/e_parking/Pembayara_Activity.kt index df9dfda..1b06390 100644 --- a/E_Parking/app/src/main/java/com/example/e_parking/Pembayara_Activity.kt +++ b/E_Parking/app/src/main/java/com/example/e_parking/Pembayara_Activity.kt @@ -1,18 +1,81 @@ package com.example.e_parking import android.content.Intent +import android.content.res.Resources +import android.graphics.Bitmap +import android.graphics.Color import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.widget.ImageView +import com.google.zxing.* +import com.google.zxing.common.BitMatrix import kotlinx.android.synthetic.main.activity_pembayara_.* +import org.w3c.dom.Text +import java.time.LocalDateTime +import java.time.format.DateTimeFormatter +import java.time.format.FormatStyle class Pembayara_Activity : AppCompatActivity() { + internal var bitmap:Bitmap?=null + private var qr:ImageView?=null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_pembayara_) +// var data: String =intent.getStringExtra("data") + + qr=findViewById(R.id.qrcode) as ImageView + try{ + val current = LocalDateTime.now() + val formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT) + val formatted = current.format(formatter) + txtData.text="Data: "+formatted + bitmap= TextToImageEncode(formatted) + qr!!.setImageBitmap(bitmap) + }catch (e: WriterException){ + e.printStackTrace() + } + kembali.setOnClickListener { val i = Intent(baseContext, Home_Activity::class.java) startActivity(i) } } + @Throws(WriterException::class) + private fun TextToImageEncode(Value: String): Bitmap? { + val bitMatrix: BitMatrix + try { + bitMatrix = MultiFormatWriter().encode( + Value, + BarcodeFormat.QR_CODE, + 1000, 1000, null + ) + + } catch (Illegalargumentexception: IllegalArgumentException) { + + return null + } + + val bitMatrixWidth = bitMatrix.getWidth() + + val bitMatrixHeight = bitMatrix.getHeight() + + val pixels = IntArray(bitMatrixWidth * bitMatrixHeight) + + for (y in 0 until bitMatrixHeight) { + val offset = y * bitMatrixWidth + + for (x in 0 until bitMatrixWidth) { + + pixels[offset + x] = if (bitMatrix.get(x, y)) + Color.BLACK + else + Color.WHITE + } + } + val bitmap = Bitmap.createBitmap(bitMatrixWidth, bitMatrixHeight, Bitmap.Config.ARGB_8888) + + bitmap.setPixels(pixels, 0, 1000, 0, 0, bitMatrixWidth, bitMatrixHeight) + return bitmap + } } diff --git a/E_Parking/app/src/main/java/com/example/e_parking/scan_Activity.kt b/E_Parking/app/src/main/java/com/example/e_parking/scan_Activity.kt index f64f064..ecc2091 100644 --- a/E_Parking/app/src/main/java/com/example/e_parking/scan_Activity.kt +++ b/E_Parking/app/src/main/java/com/example/e_parking/scan_Activity.kt @@ -61,7 +61,8 @@ class scan_Activity : AppCompatActivity() { vibrator=applicationContext.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator vibrator.vibrate(1000) text.setText(qrCodes.valueAt(0).displayValue) - val i = Intent(baseContext, Pembayara_Activity::class.java) + val i:Intent = Intent(baseContext, Pembayara_Activity::class.java) + i.putExtra("data", qrCodes.valueAt(0).displayValue) startActivity(i) } }) diff --git a/E_Parking/app/src/main/res/layout/activity_pembayara_.xml b/E_Parking/app/src/main/res/layout/activity_pembayara_.xml index e5112f2..df68956 100644 --- a/E_Parking/app/src/main/res/layout/activity_pembayara_.xml +++ b/E_Parking/app/src/main/res/layout/activity_pembayara_.xml @@ -4,7 +4,8 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".Pembayara_Activity"> + tools:context=".Pembayara_Activity" + android:orientation="horizontal"> + app:layout_constraintTop_toTopOf="parent" /> - - + + #2DAC9E #00574B #D81B60 + #000000 + #ffffff diff --git a/E_Parking/build.gradle b/E_Parking/build.gradle index 002f333..cdda426 100644 --- a/E_Parking/build.gradle +++ b/E_Parking/build.gradle @@ -10,6 +10,7 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:3.5.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath 'com.google.gms:google-services:4.2.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } From aba98af2ca5cbf58e15300439a5bbf1c6888529e Mon Sep 17 00:00:00 2001 From: Arnan Dwika Diasmara Date: Sat, 30 Nov 2019 17:49:39 +0700 Subject: [PATCH 2/2] write data dan read data bisa. qrcode dinamis dari firebase --- E_Parking/app/build.gradle | 1 + .../java/com/example/e_parking/Firebase.kt | 31 ++++++++++++ .../com/example/e_parking/Home_Activity.kt | 5 ++ .../com/example/e_parking/MainActivity.kt | 44 ++++++++++------- .../java/com/example/e_parking/ModelQrcode.kt | 3 ++ .../example/e_parking/Pembayara_Activity.kt | 47 +++++++++++++------ .../com/example/e_parking/scan_Activity.kt | 15 +++++- 7 files changed, 114 insertions(+), 32 deletions(-) create mode 100644 E_Parking/app/src/main/java/com/example/e_parking/Firebase.kt create mode 100644 E_Parking/app/src/main/java/com/example/e_parking/ModelQrcode.kt diff --git a/E_Parking/app/build.gradle b/E_Parking/app/build.gradle index a79c504..1c25601 100644 --- a/E_Parking/app/build.gradle +++ b/E_Parking/app/build.gradle @@ -31,6 +31,7 @@ dependencies { implementation 'androidx.core:core-ktx:1.0.2' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'com.google.firebase:firebase-auth:16.0.5' + implementation 'com.google.firebase:firebase-database:16.0.4' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' diff --git a/E_Parking/app/src/main/java/com/example/e_parking/Firebase.kt b/E_Parking/app/src/main/java/com/example/e_parking/Firebase.kt new file mode 100644 index 0000000..64934fc --- /dev/null +++ b/E_Parking/app/src/main/java/com/example/e_parking/Firebase.kt @@ -0,0 +1,31 @@ +package com.example.e_parking + +import android.provider.ContactsContract +import android.renderscript.Sampler +import android.util.Log +import com.google.firebase.auth.FirebaseAuth +import com.google.firebase.database.* +import java.util.* + +class Firebase { + val database: FirebaseDatabase = FirebaseDatabase.getInstance() + val myRef: DatabaseReference = database.getReference() + + fun connect(username:String, jam:String, id: String){ + + val uid: String= FirebaseAuth.getInstance().currentUser!!.uid.toString() + val user = username + val book = ModelQrcode(id,jam, user) + myRef.child("booking").child(uid).setValue(book) +// myRef.apply { +//// myRef.child("username").setValue(username) +// myRef.child(uid).child("id_tempat").setValue(id) +// myRef.child(uid).child("jam_masuk").setValue(jam) +// myRef.child(uid).child("user").setValue(user) +// } + +// Log.d("PRINTNYA", myRef.key!!.get(0).toString()) +// myRef.setValue("Hello, World!"); + } + +} \ No newline at end of file diff --git a/E_Parking/app/src/main/java/com/example/e_parking/Home_Activity.kt b/E_Parking/app/src/main/java/com/example/e_parking/Home_Activity.kt index 42e07ff..9c5f409 100644 --- a/E_Parking/app/src/main/java/com/example/e_parking/Home_Activity.kt +++ b/E_Parking/app/src/main/java/com/example/e_parking/Home_Activity.kt @@ -12,18 +12,23 @@ class Home_Activity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_home_) + val user = intent.getStringExtra("user") Toast.makeText(baseContext, "masuk HOME", Toast.LENGTH_LONG).show() btnBayar.setOnClickListener { // Toast.makeText(baseContext, "berhasil Bayar", Toast.LENGTH_LONG).show() val i = Intent(baseContext, Pembayara_Activity::class.java) + i.putExtra("user",user) startActivity(i) + finish() } btnScan.setOnClickListener { // Toast.makeText(baseContext, "berhasil scan", Toast.LENGTH_LONG).show() val i = Intent(baseContext, scan_Activity::class.java) + i.putExtra("user", user) startActivity(i) + finish() } } } diff --git a/E_Parking/app/src/main/java/com/example/e_parking/MainActivity.kt b/E_Parking/app/src/main/java/com/example/e_parking/MainActivity.kt index dc79021..6a7f3c3 100644 --- a/E_Parking/app/src/main/java/com/example/e_parking/MainActivity.kt +++ b/E_Parking/app/src/main/java/com/example/e_parking/MainActivity.kt @@ -1,6 +1,8 @@ package com.example.e_parking +import android.content.Context import android.content.Intent +import android.content.SharedPreferences import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Toast @@ -8,24 +10,34 @@ import com.google.firebase.auth.FirebaseAuth import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { - + var sp :SharedPreferences?=null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.activity_main) - - btnLogin.setOnClickListener { - FirebaseAuth.getInstance() - .signInWithEmailAndPassword(edtUsername.text.toString(),edtPassword.text.toString()) - .addOnSuccessListener { - Toast.makeText(baseContext, "Login Berhasil", Toast.LENGTH_LONG).show() - val i= Intent(baseContext, Home_Activity::class.java) - startActivity(i) - } - .addOnFailureListener { -// FirebaseAuth.getInstance().createUserWithEmailAndPassword(edtEmail.text.toString(), edtPassword.text.toString()) - Toast.makeText(baseContext, "Username atau password salah!", Toast.LENGTH_LONG).show() - } - } + sp=getSharedPreferences("sp", Context.MODE_PRIVATE) +// if(sp?.getBoolean("isLogin", false)!!){ +// val i= Intent(baseContext, Home_Activity::class.java) +// i.putExtra("user", edtUsername.text.toString()) +// startActivity(i) +// finish() +// }else{ + setContentView(R.layout.activity_main) + btnLogin.setOnClickListener { + FirebaseAuth.getInstance() + .signInWithEmailAndPassword(edtUsername.text.toString(),edtPassword.text.toString()) + .addOnSuccessListener { + Toast.makeText(baseContext, "Login Berhasil", Toast.LENGTH_LONG).show() + val i= Intent(baseContext, Home_Activity::class.java) + i.putExtra("user", edtUsername.text.toString()) +// sp?.edit()?.putBoolean("isLogin", true)?.commit() + startActivity(i) + finish() + } + .addOnFailureListener { + // FirebaseAuth.getInstance().createUserWithEmailAndPassword(edtEmail.text.toString(), edtPassword.text.toString()) + Toast.makeText(baseContext, "Username atau password salah!", Toast.LENGTH_LONG).show() + } + } +// } } diff --git a/E_Parking/app/src/main/java/com/example/e_parking/ModelQrcode.kt b/E_Parking/app/src/main/java/com/example/e_parking/ModelQrcode.kt new file mode 100644 index 0000000..9c4ec3e --- /dev/null +++ b/E_Parking/app/src/main/java/com/example/e_parking/ModelQrcode.kt @@ -0,0 +1,3 @@ +package com.example.e_parking + +class ModelQrcode (var id_tempat: String="-" ,var jam_masuk: String="-", var user:String = "-") \ No newline at end of file diff --git a/E_Parking/app/src/main/java/com/example/e_parking/Pembayara_Activity.kt b/E_Parking/app/src/main/java/com/example/e_parking/Pembayara_Activity.kt index 1b06390..9a95ded 100644 --- a/E_Parking/app/src/main/java/com/example/e_parking/Pembayara_Activity.kt +++ b/E_Parking/app/src/main/java/com/example/e_parking/Pembayara_Activity.kt @@ -7,6 +7,8 @@ import android.graphics.Color import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.ImageView +import com.google.firebase.auth.FirebaseAuth +import com.google.firebase.database.* import com.google.zxing.* import com.google.zxing.common.BitMatrix import kotlinx.android.synthetic.main.activity_pembayara_.* @@ -18,27 +20,44 @@ import java.time.format.FormatStyle class Pembayara_Activity : AppCompatActivity() { internal var bitmap:Bitmap?=null private var qr:ImageView?=null - + val uid = FirebaseAuth.getInstance().currentUser!!.uid.toString() + val myRef: DatabaseReference = FirebaseDatabase.getInstance().getReference("booking/$uid") + var tempat ="" + var jam ="" + var username="" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_pembayara_) -// var data: String =intent.getStringExtra("data") - - qr=findViewById(R.id.qrcode) as ImageView - try{ - val current = LocalDateTime.now() - val formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT) - val formatted = current.format(formatter) - txtData.text="Data: "+formatted - bitmap= TextToImageEncode(formatted) - qr!!.setImageBitmap(bitmap) - }catch (e: WriterException){ - e.printStackTrace() - } + + myRef.addValueEventListener(object: ValueEventListener { + override fun onCancelled(p0: DatabaseError) { + + } + + override fun onDataChange(datasnapshot: DataSnapshot) { + val code = datasnapshot.getValue(ModelQrcode::class.java) + tempat=code!!.id_tempat + jam=code!!.jam_masuk + username=code!!.user + var hasil= username+"\n"+tempat+"\n"+jam + qr=findViewById(R.id.qrcode) as ImageView + txtData.text=username+"\n"+tempat+"\n"+jam + try{ + val qrcode = hasil + bitmap= TextToImageEncode(qrcode) + qr!!.setImageBitmap(bitmap) + }catch (e: WriterException){ + e.printStackTrace() + } + } + + }) + kembali.setOnClickListener { val i = Intent(baseContext, Home_Activity::class.java) startActivity(i) + finish() } } @Throws(WriterException::class) diff --git a/E_Parking/app/src/main/java/com/example/e_parking/scan_Activity.kt b/E_Parking/app/src/main/java/com/example/e_parking/scan_Activity.kt index ecc2091..7624119 100644 --- a/E_Parking/app/src/main/java/com/example/e_parking/scan_Activity.kt +++ b/E_Parking/app/src/main/java/com/example/e_parking/scan_Activity.kt @@ -16,12 +16,16 @@ import com.google.android.gms.vision.CameraSource import com.google.android.gms.vision.Detector import com.google.android.gms.vision.barcode.Barcode import com.google.android.gms.vision.barcode.BarcodeDetector +import java.time.LocalDateTime +import java.time.format.DateTimeFormatter +import java.time.format.FormatStyle class scan_Activity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_scan_) + val user= intent.getStringExtra("user") val surfaceview: SurfaceView =findViewById(R.id.camerapreview) val text: TextView =findViewById(R.id.textView) @@ -60,10 +64,17 @@ class scan_Activity : AppCompatActivity() { val vibrator: Vibrator vibrator=applicationContext.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator vibrator.vibrate(1000) - text.setText(qrCodes.valueAt(0).displayValue) + val kode = qrCodes.valueAt(0).displayValue + val current = LocalDateTime.now() + val formatter = DateTimeFormatter.ofPattern("yy-MM-dd HH:mm:ss") + val formatted = current.format(formatter) val i:Intent = Intent(baseContext, Pembayara_Activity::class.java) - i.putExtra("data", qrCodes.valueAt(0).displayValue) + i.putExtra("data", kode) + i.putExtra("jam", formatted) + i.putExtra("user",user) + Firebase().connect(user,formatted,kode) startActivity(i) + finish() } }) }