Uploaded by yogieko18

Tugas Praktikum

advertisement
Nama : Yogi Eko Febriano
NIM
: 203307020
Kelas
: TI – 2A
A.
1. Buat Empety Activity
2. Tambahkan hak permission agar aplikasi bisa terhubung ke internet
3. Buat Direktori raw dan menambahkan file mp4.
4.membuat suatu aksi/melakukan perintah dengan melakukan penulisan kode atau intruksi mesin untuk
melakukan perintah inputan, yang diproses.
Kode XML activity_main.xml :
<?xml version="1.0"encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<VideoView
android:id="@+id/videoView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_margin="10dp"/>
</RelativeLayout>
Kode Kotlin MainActivity.kt
package com.example.viewvideoyogi
import
import
import
import
import
android.net.Uri
androidx.appcompat.app.AppCompatActivity
android.os.Bundle
android.widget.MediaController
android.widget.VideoView
class MainActivity : AppCompatActivity() {
//
Menginilisasi variabel videoView yang menggunakan fungsi VideoView
private lateinit var videoView: VideoView
//
Menginilisasi tampilan yang akan di proses
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//
memanggil layout videoview di xml dan melakukan pendeklarasian di
dalam variabel
videoView = findViewById(R.id.videoView)
val mediaController = MediaController(this)
mediaController.setAnchorView(videoView)
//
memanggil video yang berada di internet dengan link url video dan
menambahkan kedalam variabel, mengambil fungsi pengambilan url dengan
perintah uri.parse
val onlineUri : Uri =
Uri.parse("https://cdn.videvo.net/videvo_files/video/premium/video0229/small_
watermarked/07_usa_day_4_368_heart_preview.webm")
//
memanggil file video yang berada dengan satu file dengan folder
memasukan perintah kedalam variabel
val offlineUri : Uri =
Uri.parse("android.resource://$packageName/${R.raw.vidio1}")
videoView.setMediaController(mediaController)
video
videoView.setVideoURI(offlineUri)
// videoView.setVideoURI(onlineUri)
videoView.requestFocus()
videoView.start()
}
}
PrintScreen :
Offline:
Online:
dan
//inisiasi pengontrolan
//memanggil URI video
B.
1. Membuat Project Empety Activity dengan nama ViewImage Yogi.
2. Menambahkan Akses untuk izin aplikasi untuk menggunakan kamera.
3. Membuat tampilan ui android.
4. Membuat Aksi untuk melakukan intruksi mesin sesuai kode yang di intruksikan.
SourceCode Activity_main.xml
<?xml version="1.0"encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ImageView
android:id="@+id/imageView"
android:layout_width="324dp"
android:layout_height="223dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.597"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.09"
app:srcCompat="@drawable/ic_launcher_background"
tools:ignore="VectorDrawableCompat"/>
<Button
android:id="@+id/btn_Capture"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CAPTURE"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.265"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.478"/>
<Button
android:id="@+id/btn_gallery"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="GALLERY"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.775"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.478"/>
<Button
android:id="@+id/btn_save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SAVE"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.253"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.616"/>
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.kt
package com.example.viewimageyogi
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
android.content.ContentValues
android.content.Intent
android.content.pm.PackageManager
android.graphics.Bitmap
android.os.Build
android.os.Bundle
android.os.Environment
android.provider.MediaStore
android.widget.Button
android.widget.ImageView
android.widget.Toast
androidx.appcompat.app.AppCompatActivity
androidx.core.app.ActivityCompat
androidx.core.view.drawToBitmap
java.io.File
java.io.OutputStream
java.util.*
java.util.jar.Manifest
class MainActivity :
private lateinit var
private lateinit var
private lateinit var
private lateinit var
AppCompatActivity() {
btnCapture : Button
btnGallery : Button
imgView
: ImageView
btnSave
: Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btnCapture
btnGallery
imgView
btnSave
=
=
=
=
findViewById<Button>(R.id.btn_Capture)
findViewById<Button>(R.id.btn_gallery)
findViewById<ImageView>(R.id.imageView)
findViewById<Button>(R.id.btn_save)
//action untuk klik tombol capture
btnCapture.setOnClickListener {
//lakukan cek permission untuk mengakses kamera
if
(ActivityCompat.checkSelfPermission(this,android.Manifest.permission.CAMERA)!
= PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this,
arrayOf(android.Manifest.permission.CAMERA), 123)
} else {
//bila 'ALLOW' maka program bisa mengakses camera dengan requestCode 123
val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
startActivityForResult(intent, 123)
}
}
//action untuk klik tombol Gallery
btnGallery.setOnClickListener {
//mengakses direktori image
val intent = Intent(Intent.ACTION_PICK)
intent.type = "image/*"
startActivityForResult(intent, 456)
}
//action untuk klik tombol save
btnSave.setOnClickListener{
val bitmap = imgView.drawToBitmap()
saveImage(bitmap) //panggil fungsi saveImage
}
}
private fun saveImage(bitmap: Bitmap) {
val fos: OutputStream
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
val resolver = contentResolver
val contentValues = ContentValues()
//Simpan File Gambar.jpg ke dalam direktori FolderPraktikum
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME,"Gambar"+".jpg")
contentValues.put(MediaStore.MediaColumns.MIME_TYPE,"image/jpg")
contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH,Environment.DIRECTORY
_PICTURES+File.separator+"FolderPraktikum")
val imageUri =
resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,contentValues)
fos =
resolver.openOutputStream(Objects.requireNonNull(imageUri)!!)!!
bitmap.compress(Bitmap.CompressFormat.JPEG, 30,fos)
Objects.requireNonNull<OutputStream?>(fos)
Toast.makeText(this, "Berhasil disimpan",
Toast.LENGTH_SHORT).show()
}else{
Toast.makeText(this, "Gagal disimpan",Toast.LENGTH_SHORT).show()
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data:
Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == 123) {
// tombol Capture
val bmp = data?.extras?.get("data")as Bitmap
imgView.setImageBitmap(bmp)
}else if (requestCode == 456) {
//tombol Gallery
imgView.setImageURI(data?.data)
}
}
}
PrintScreen:
Tampilan awal.
Setelah di klik capture
Maka akan berubah tampilanya seperti ini.
Ketika disimpan gagal.
Download