mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-04-20 22:23:37 +00:00
Added App Introduction Screens
Added three screens explaining Meshtastic and how to use the app. This is only shown on the first launch of the app.
This commit is contained in:
parent
4e2b00bfd5
commit
51f78a3328
11 changed files with 299 additions and 199 deletions
68
app/src/main/java/com/geeksville/mesh/AppIntroduction.kt
Normal file
68
app/src/main/java/com/geeksville/mesh/AppIntroduction.kt
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
package com.geeksville.mesh
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.SharedPreferences
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import com.github.appintro.AppIntro
|
||||
import com.github.appintro.AppIntroFragment
|
||||
|
||||
class AppIntroduction : AppIntro() {
|
||||
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
// Make sure you don't call setContentView!
|
||||
|
||||
// Call addSlide passing your Fragments.
|
||||
// You can use AppIntroFragment to use a pre-built fragment
|
||||
addSlide(
|
||||
AppIntroFragment.createInstance(
|
||||
title = resources.getString(R.string.intro_welcome_title),
|
||||
description = resources.getString(R.string.intro_meshtastic_desc),
|
||||
imageDrawable = R.mipmap.ic_launcher2_round,
|
||||
backgroundColorRes = R.color.colourGrey,
|
||||
descriptionColorRes = R.color.colorOnPrimary
|
||||
))
|
||||
addSlide(AppIntroFragment.createInstance(
|
||||
title = resources.getString(R.string.intro_get_started),
|
||||
description = resources.getString(R.string.intro_started_text),
|
||||
imageDrawable = R.drawable.icon_meanings,
|
||||
backgroundColorRes = R.color.colourGrey,
|
||||
descriptionColorRes = R.color.colorOnPrimary
|
||||
))
|
||||
addSlide(AppIntroFragment.createInstance(
|
||||
title = resources.getString(R.string.intro_ecryption_title),
|
||||
description = resources.getString(R.string.intro_encryption_text),
|
||||
imageDrawable = R.drawable.channel_name_image,
|
||||
backgroundColorRes = R.color.colourGrey,
|
||||
descriptionColorRes = R.color.colorOnPrimary
|
||||
))
|
||||
//addSlide(SlideTwoFragment())
|
||||
}
|
||||
|
||||
override fun onSkipPressed(currentFragment: Fragment?) {
|
||||
super.onSkipPressed(currentFragment)
|
||||
// Decide what to do when the user clicks on "Skip"
|
||||
finish()
|
||||
val preferences = getSharedPreferences("PREFERENCES", Context.MODE_PRIVATE)
|
||||
var editor = preferences.edit()
|
||||
editor.putBoolean("app_intro_completed", true)
|
||||
editor.apply()
|
||||
|
||||
startActivity(Intent(this, MainActivity::class.java))
|
||||
}
|
||||
|
||||
override fun onDonePressed(currentFragment: Fragment?) {
|
||||
super.onDonePressed(currentFragment)
|
||||
// Decide what to do when the user clicks on "Done"
|
||||
finish()
|
||||
val preferences = getSharedPreferences("PREFERENCES", Context.MODE_PRIVATE)
|
||||
var editor = preferences.edit()
|
||||
editor.putBoolean("app_intro_completed", true)
|
||||
editor.apply()
|
||||
|
||||
startActivity(Intent(this, MainActivity::class.java))
|
||||
}
|
||||
}
|
||||
|
|
@ -404,9 +404,16 @@ class MainActivity : BaseActivity(), Logging,
|
|||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
val preferences = getSharedPreferences("PREFERENCES", Context.MODE_PRIVATE)
|
||||
|
||||
installSplashScreen()
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
if (preferences.getBoolean("app_intro_completed", false) == false) {
|
||||
startActivity(Intent(this, AppIntroduction::class.java))
|
||||
}
|
||||
|
||||
|
||||
binding = ActivityMainBinding.inflate(layoutInflater)
|
||||
|
||||
val prefs = UIViewModel.getPreferences(this)
|
||||
|
|
@ -1070,6 +1077,10 @@ class MainActivity : BaseActivity(), Logging,
|
|||
chooseMapStyle()
|
||||
return true
|
||||
}
|
||||
R.id.show_intro -> {
|
||||
startActivity(Intent(this, AppIntroduction::class.java))
|
||||
return true
|
||||
}
|
||||
else -> super.onOptionsItemSelected(item)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,9 +21,11 @@ val Context.bluetoothManager: BluetoothManager? get() = getSystemService(Context
|
|||
val Context.deviceManager: CompanionDeviceManager?
|
||||
@SuppressLint("InlinedApi")
|
||||
get() {
|
||||
val activity: MainActivity? = GeeksvilleApplication.currentActivity as MainActivity?
|
||||
return if (hasCompanionDeviceApi()) activity?.getSystemService(Context.COMPANION_DEVICE_SERVICE) as? CompanionDeviceManager?
|
||||
else null
|
||||
if (GeeksvilleApplication.currentActivity is MainActivity) {
|
||||
val activity = GeeksvilleApplication.currentActivity
|
||||
if (hasCompanionDeviceApi()) return activity?.getSystemService(Context.COMPANION_DEVICE_SERVICE) as? CompanionDeviceManager?
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
val Context.usbManager: UsbManager get() = requireNotNull(getSystemService(Context.USB_SERVICE) as? UsbManager?) { "USB_SERVICE is not available"}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue