update allert yuda
This commit is contained in:
parent
2638da3f05
commit
2e35f8bcd6
10
.idea/deploymentTargetSelector.xml
generated
Normal file
10
.idea/deploymentTargetSelector.xml
generated
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="deploymentTargetSelector">
|
||||||
|
<selectionStates>
|
||||||
|
<SelectionState runConfigName="app">
|
||||||
|
<option name="selectionMode" value="DROPDOWN" />
|
||||||
|
</SelectionState>
|
||||||
|
</selectionStates>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
@ -3,16 +3,13 @@ package id.ac.ubharajaya.panicbutton
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import androidx.activity.ComponentActivity
|
import androidx.activity.ComponentActivity
|
||||||
import androidx.activity.compose.setContent
|
import androidx.activity.compose.setContent
|
||||||
import androidx.activity.enableEdgeToEdge
|
import androidx.compose.foundation.layout.*
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
|
||||||
import androidx.compose.foundation.layout.padding
|
|
||||||
import androidx.compose.material3.Scaffold
|
|
||||||
import androidx.compose.material3.Button
|
import androidx.compose.material3.Button
|
||||||
import androidx.compose.material3.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.*
|
||||||
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.unit.dp
|
||||||
import id.ac.ubharajaya.panicbutton.ui.theme.PanicButtonTheme
|
|
||||||
import okhttp3.MediaType.Companion.toMediaType
|
import okhttp3.MediaType.Companion.toMediaType
|
||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
import okhttp3.Request
|
import okhttp3.Request
|
||||||
@ -21,32 +18,75 @@ import okhttp3.RequestBody
|
|||||||
class MainActivity : ComponentActivity() {
|
class MainActivity : ComponentActivity() {
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
enableEdgeToEdge()
|
|
||||||
setContent {
|
setContent {
|
||||||
PanicButtonTheme {
|
MyApp()
|
||||||
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
|
|
||||||
Greeting(
|
|
||||||
name = "Android",
|
|
||||||
modifier = Modifier.padding(innerPadding)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun Greeting(name: String, modifier: Modifier = Modifier) {
|
fun MyApp() {
|
||||||
Text(
|
// State untuk menampilkan hasil request
|
||||||
text = "Hello $name!",
|
var message by remember { mutableStateOf("Klik tombol untuk mengirim notifikasi") }
|
||||||
modifier = modifier
|
|
||||||
)
|
|
||||||
|
// UI
|
||||||
|
Column(
|
||||||
|
modifier = Modifier
|
||||||
|
.fillMaxSize()
|
||||||
|
.padding(16.dp),
|
||||||
|
verticalArrangement = Arrangement.Center,
|
||||||
|
horizontalAlignment = Alignment.CenterHorizontally
|
||||||
|
) {
|
||||||
|
Text(text = message, Modifier.padding(bottom = 16.dp))
|
||||||
|
Button(onClick = {
|
||||||
|
// Kirim HTTP request saat tombol ditekan
|
||||||
|
sendNotification { response ->
|
||||||
|
message = response
|
||||||
|
}
|
||||||
|
}) {
|
||||||
|
Text(text = "Kirim Alert")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Preview(showBackground = true)
|
|
||||||
@Composable
|
// Fungsi untuk mengirimkan HTTP request
|
||||||
fun GreetingPreview() {
|
fun sendNotification(onResult: (String) -> Unit) {
|
||||||
PanicButtonTheme {
|
val client = OkHttpClient()
|
||||||
Greeting("Android")
|
val url = "https://ntfy.ubharajaya.ac.id/panic-button" // Ganti <your-topic> dengan topik Anda
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
val requestBody = RequestBody.create(
|
||||||
|
"text/plain".toMediaType(), // Mengirim plain text
|
||||||
|
"Notifikasi dari Nuryuda Maulana (202310715038)!" // Pesan yang akan tampil
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
val request = Request.Builder()
|
||||||
|
.url(url)
|
||||||
|
.addHeader("Title", "Alert")
|
||||||
|
.addHeader("Priority", "urgent")
|
||||||
|
.addHeader("Tags", "alert warning,rotating_light")
|
||||||
|
.post(requestBody)
|
||||||
|
.build()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Eksekusi request di thread terpisah
|
||||||
|
Thread {
|
||||||
|
try {
|
||||||
|
val response = client.newCall(request).execute()
|
||||||
|
if (response.isSuccessful) {
|
||||||
|
onResult("Notifikasi berhasil dikirim!")
|
||||||
|
} else {
|
||||||
|
onResult("Gagal mengirim notifikasi: ${response.code}")
|
||||||
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
onResult("Error: ${e.message}")
|
||||||
|
}
|
||||||
|
}.start()
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user