Skip to content

Commit

Permalink
Better error message (#167)
Browse files Browse the repository at this point in the history
* Better error message

* Arctic Fox code style

* Kotlin setup

* Kotlin conversion
  • Loading branch information
hannesa2 authored Dec 4, 2021
1 parent b3c35a5 commit a64b7b9
Show file tree
Hide file tree
Showing 8 changed files with 229 additions and 276 deletions.
20 changes: 4 additions & 16 deletions .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 10 additions & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
apply plugin: 'com.android.application'
plugins {
id 'com.android.application'
id 'kotlin-android'
}

android {
compileSdkVersion 31
Expand All @@ -11,6 +14,10 @@ android {
versionName getTag()
}

buildFeatures {
viewBinding true
}

buildTypes {
release {
minifyEnabled false
Expand All @@ -33,4 +40,6 @@ dependencies {

implementation 'com.jakewharton:butterknife:10.2.3'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3'
implementation "androidx.core:core-ktx:1.7.0"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

This file was deleted.

71 changes: 71 additions & 0 deletions app/src/main/java/com/github/niqdev/ipcam/IpCamDefaultActivity.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
package com.github.niqdev.ipcam

import android.content.SharedPreferences
import android.content.res.Configuration
import android.os.Bundle
import android.preference.PreferenceManager
import android.util.Log
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.github.niqdev.ipcam.databinding.ActivityIpcamDefaultBinding
import com.github.niqdev.ipcam.settings.SettingsActivity
import com.github.niqdev.mjpeg.DisplayMode
import com.github.niqdev.mjpeg.Mjpeg
import com.github.niqdev.mjpeg.MjpegInputStream

class IpCamDefaultActivity : AppCompatActivity() {

private val sharedPreferences: SharedPreferences
get() = PreferenceManager.getDefaultSharedPreferences(this)

private lateinit var binding: ActivityIpcamDefaultBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityIpcamDefaultBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
}

private fun getPreference(key: String): String? = sharedPreferences.getString(key, "")

private fun getBooleanPreference(key: String) = sharedPreferences.getBoolean(key, false)

private fun calculateDisplayMode() = if (resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE)
DisplayMode.FULLSCREEN
else
DisplayMode.BEST_FIT

private fun loadIpCam() {
Mjpeg.newInstance()
.credential(getPreference(SettingsActivity.PREF_AUTH_USERNAME), getPreference(SettingsActivity.PREF_AUTH_PASSWORD))
.open(getPreference(SettingsActivity.PREF_IPCAM_URL), TIMEOUT)
.subscribe(
{ inputStream: MjpegInputStream? ->
binding.mjpegViewDefault.setSource(inputStream)
binding.mjpegViewDefault.setDisplayMode(calculateDisplayMode())
binding.mjpegViewDefault.flipHorizontal(getBooleanPreference(SettingsActivity.PREF_FLIP_HORIZONTAL))
binding.mjpegViewDefault.flipVertical(getBooleanPreference(SettingsActivity.PREF_FLIP_VERTICAL))
binding.mjpegViewDefault.setRotate(getPreference(SettingsActivity.PREF_ROTATE_DEGREES)!!.toFloat())
binding.mjpegViewDefault.showFps(true)
}
) { throwable: Throwable ->
Log.e(javaClass.simpleName, "mjpeg error", throwable)
Toast.makeText(this, "Error ${throwable.javaClass.simpleName}\n${getPreference(SettingsActivity.PREF_IPCAM_URL)}", Toast.LENGTH_LONG).show()
}
}

override fun onResume() {
super.onResume()
loadIpCam()
}

override fun onPause() {
super.onPause()
binding.mjpegViewDefault.stopPlayback()
}

companion object {
private const val TIMEOUT = 5
}
}
168 changes: 0 additions & 168 deletions app/src/main/java/com/github/niqdev/ipcam/IpCamSnapshotActivity.java

This file was deleted.

Loading

0 comments on commit a64b7b9

Please sign in to comment.