Cleanup and Attributions
This commit is contained in:
parent
aeeb1b0a1f
commit
14db38c2c4
|
@ -1,6 +1,6 @@
|
||||||
package cash.z.android.wallet.sample
|
package cash.z.android.wallet.sample
|
||||||
|
|
||||||
import android.preference.PreferenceManager
|
import android.content.Context
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import cash.z.android.wallet.ZcashWalletApplication
|
import cash.z.android.wallet.ZcashWalletApplication
|
||||||
import okio.ByteString
|
import okio.ByteString
|
||||||
|
@ -8,10 +8,6 @@ import java.nio.charset.Charset
|
||||||
import kotlin.properties.ReadOnlyProperty
|
import kotlin.properties.ReadOnlyProperty
|
||||||
import kotlin.properties.ReadWriteProperty
|
import kotlin.properties.ReadWriteProperty
|
||||||
import kotlin.reflect.KProperty
|
import kotlin.reflect.KProperty
|
||||||
import android.R.id.edit
|
|
||||||
import android.content.Context
|
|
||||||
import android.content.SharedPreferences
|
|
||||||
import java.lang.IllegalStateException
|
|
||||||
|
|
||||||
@Deprecated(message = InsecureWarning.message)
|
@Deprecated(message = InsecureWarning.message)
|
||||||
class SampleImportedSeedProvider(private val seedHex: String) : ReadOnlyProperty<Any?, ByteArray> {
|
class SampleImportedSeedProvider(private val seedHex: String) : ReadOnlyProperty<Any?, ByteArray> {
|
||||||
|
|
|
@ -1,26 +1,17 @@
|
||||||
package cash.z.android.wallet.ui.activity
|
package cash.z.android.wallet.ui.activity
|
||||||
|
|
||||||
import android.animation.ObjectAnimator
|
|
||||||
import android.animation.ValueAnimator
|
|
||||||
import android.annotation.SuppressLint
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.util.Log
|
|
||||||
import android.view.Gravity
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.inputmethod.InputMethodManager
|
import android.view.inputmethod.InputMethodManager
|
||||||
import android.view.inputmethod.InputMethodManager.HIDE_NOT_ALWAYS
|
import android.view.inputmethod.InputMethodManager.HIDE_NOT_ALWAYS
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
|
||||||
import androidx.appcompat.app.AppCompatDelegate
|
import androidx.appcompat.app.AppCompatDelegate
|
||||||
import androidx.appcompat.graphics.drawable.DrawerArrowDrawable
|
|
||||||
import androidx.core.app.ActivityCompat
|
|
||||||
import androidx.core.content.getSystemService
|
import androidx.core.content.getSystemService
|
||||||
import androidx.core.view.GravityCompat
|
import androidx.core.view.GravityCompat
|
||||||
import androidx.core.view.doOnLayout
|
import androidx.core.view.doOnLayout
|
||||||
import androidx.databinding.DataBindingUtil
|
import androidx.databinding.DataBindingUtil
|
||||||
import androidx.drawerlayout.widget.DrawerLayout
|
import androidx.drawerlayout.widget.DrawerLayout
|
||||||
import androidx.navigation.NavController
|
import androidx.navigation.NavController
|
||||||
import androidx.navigation.NavDestination
|
|
||||||
import androidx.navigation.Navigation
|
import androidx.navigation.Navigation
|
||||||
import androidx.navigation.ui.AppBarConfiguration
|
import androidx.navigation.ui.AppBarConfiguration
|
||||||
import androidx.navigation.ui.navigateUp
|
import androidx.navigation.ui.navigateUp
|
||||||
|
@ -28,23 +19,12 @@ import androidx.navigation.ui.setupActionBarWithNavController
|
||||||
import androidx.navigation.ui.setupWithNavController
|
import androidx.navigation.ui.setupWithNavController
|
||||||
import cash.z.android.wallet.BuildConfig
|
import cash.z.android.wallet.BuildConfig
|
||||||
import cash.z.android.wallet.R
|
import cash.z.android.wallet.R
|
||||||
import cash.z.android.wallet.ZcashWalletApplication
|
|
||||||
import cash.z.android.wallet.databinding.ActivityMainBinding
|
import cash.z.android.wallet.databinding.ActivityMainBinding
|
||||||
import cash.z.android.wallet.sample.WalletConfig
|
import cash.z.android.wallet.sample.WalletConfig
|
||||||
|
import cash.z.wallet.sdk.data.Synchronizer
|
||||||
import dagger.Module
|
import dagger.Module
|
||||||
import dagger.android.ContributesAndroidInjector
|
import dagger.android.ContributesAndroidInjector
|
||||||
import dagger.android.support.DaggerAppCompatActivity
|
|
||||||
import cash.z.wallet.sdk.data.Synchronizer
|
|
||||||
import com.google.android.material.snackbar.Snackbar
|
|
||||||
import dagger.android.AndroidInjection
|
|
||||||
import kotlinx.coroutines.Dispatchers
|
|
||||||
import kotlinx.coroutines.GlobalScope
|
|
||||||
import kotlinx.coroutines.channels.ReceiveChannel
|
|
||||||
import kotlinx.coroutines.launch
|
|
||||||
import kotlinx.coroutines.withContext
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import kotlin.random.Random
|
|
||||||
import kotlin.random.nextInt
|
|
||||||
|
|
||||||
class MainActivity : BaseActivity() {
|
class MainActivity : BaseActivity() {
|
||||||
|
|
||||||
|
@ -57,17 +37,12 @@ class MainActivity : BaseActivity() {
|
||||||
lateinit var binding: ActivityMainBinding
|
lateinit var binding: ActivityMainBinding
|
||||||
lateinit var loadMessages: List<String>
|
lateinit var loadMessages: List<String>
|
||||||
|
|
||||||
// used to manage the drawer and drawerToggle interactions
|
|
||||||
private lateinit var appBarConfiguration: AppBarConfiguration
|
private lateinit var appBarConfiguration: AppBarConfiguration
|
||||||
lateinit var navController: NavController
|
lateinit var navController: NavController
|
||||||
// private val multiStartNavigationUi = MultiStartNavigationUI(listOf(
|
|
||||||
// R.id.nav_home_fragment,
|
|
||||||
// R.id.nav_welcome_fragment
|
|
||||||
// ))
|
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
binding = DataBindingUtil.setContentView<ActivityMainBinding>(this, R.layout.activity_main)
|
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
|
||||||
initAppBar()
|
initAppBar()
|
||||||
loadMessages = generateFunLoadMessages().shuffled()
|
loadMessages = generateFunLoadMessages().shuffled()
|
||||||
synchronizer.start(this)
|
synchronizer.start(this)
|
||||||
|
@ -75,7 +50,6 @@ class MainActivity : BaseActivity() {
|
||||||
|
|
||||||
private fun initAppBar() {
|
private fun initAppBar() {
|
||||||
setSupportActionBar(findViewById(R.id.main_toolbar))
|
setSupportActionBar(findViewById(R.id.main_toolbar))
|
||||||
// supportActionBar?.setDisplayHomeAsUpEnabled(false)
|
|
||||||
setupNavigation()
|
setupNavigation()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -155,6 +129,7 @@ class MainActivity : BaseActivity() {
|
||||||
"Validating your balance"
|
"Validating your balance"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun generateFunLoadMessages(): List<String> {
|
fun generateFunLoadMessages(): List<String> {
|
||||||
return listOf(
|
return listOf(
|
||||||
"Reticulating splines",
|
"Reticulating splines",
|
||||||
|
@ -173,81 +148,3 @@ abstract class MainActivityModule {
|
||||||
@ContributesAndroidInjector
|
@ContributesAndroidInjector
|
||||||
abstract fun contributeMainActivity(): MainActivity
|
abstract fun contributeMainActivity(): MainActivity
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
//class MultiStartNavigationUI(private val startDestinations: List<Int>) {
|
|
||||||
// fun setupActionBarWithNavController(activity: AppCompatActivity, navController: NavController,
|
|
||||||
// drawerLayout: DrawerLayout?) {
|
|
||||||
//
|
|
||||||
// navController.addOnNavigatedListener(ActionBarOnNavigatedListener(
|
|
||||||
// activity, startDestinations, drawerLayout))
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// fun navigateUp(drawerLayout: DrawerLayout?, navController: NavController): Boolean {
|
|
||||||
// if (drawerLayout != null && startDestinations.contains(navController.currentDestination?.id)) {
|
|
||||||
// drawerLayout.openDrawer(GravityCompat.START)
|
|
||||||
// return true
|
|
||||||
// } else {
|
|
||||||
// return navController.navigateUp()
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// fun onBackPressed(activity: AppCompatActivity,
|
|
||||||
// navController: NavController): Boolean {
|
|
||||||
// if (startDestinations.contains(navController.currentDestination?.id)) {
|
|
||||||
// ActivityCompat.finishAfterTransition(activity)
|
|
||||||
// return true
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// return false
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// private class ActionBarOnNavigatedListener(
|
|
||||||
// private val mActivity: AppCompatActivity,
|
|
||||||
// private val startDestinations: List<Int>,
|
|
||||||
// private val mDrawerLayout: DrawerLayout?
|
|
||||||
// ) : NavController.OnNavigatedListener {
|
|
||||||
// private var mArrowDrawable: DrawerArrowDrawable? = null
|
|
||||||
// private var mAnimator: ValueAnimator? = null
|
|
||||||
//
|
|
||||||
// override fun onNavigated(controller: NavController, destination: NavDestination) {
|
|
||||||
// val actionBar = mActivity.supportActionBar
|
|
||||||
//
|
|
||||||
// val title = destination.label
|
|
||||||
// if (!title.isNullOrEmpty()) {
|
|
||||||
// actionBar?.title = title
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// val isStartDestination = startDestinations.contains(destination.id)
|
|
||||||
// actionBar?.setDisplayHomeAsUpEnabled(this.mDrawerLayout != null || !isStartDestination)
|
|
||||||
// setActionBarUpIndicator(mDrawerLayout != null && isStartDestination)
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// private fun setActionBarUpIndicator(showAsDrawerIndicator: Boolean) {
|
|
||||||
// val delegate = mActivity.drawerToggleDelegate
|
|
||||||
// var animate = true
|
|
||||||
// if (mArrowDrawable == null) {
|
|
||||||
// mArrowDrawable = DrawerArrowDrawable(delegate!!.actionBarThemedContext)
|
|
||||||
// delegate.setActionBarUpIndicator(mArrowDrawable, 0)
|
|
||||||
// animate = false
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// mArrowDrawable?.let {
|
|
||||||
// val endValue = if (showAsDrawerIndicator) 0.0f else 1.0f
|
|
||||||
//
|
|
||||||
// if (animate) {
|
|
||||||
// val startValue = it.progress
|
|
||||||
// mAnimator?.cancel()
|
|
||||||
//
|
|
||||||
// @SuppressLint("ObjectAnimatorBinding")
|
|
||||||
// mAnimator = ObjectAnimator.ofFloat(it, "progress", startValue, endValue)
|
|
||||||
// mAnimator?.start()
|
|
||||||
// } else {
|
|
||||||
// it.progress = endValue
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//}
|
|
|
@ -45,8 +45,6 @@ class FirstrunFragment : ProgressFragment(R.id.progress_firstrun), Transition.Tr
|
||||||
null
|
null
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
// binding.buttonNext.alpha = 0f
|
|
||||||
// binding.textProgressFirstrun.alpha = 0f
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
|
|
|
@ -518,13 +518,6 @@ class HomeFragment : BaseFragment(), SwipeRefreshLayout.OnRefreshListener, HomeP
|
||||||
@IdRes val destination:Int
|
@IdRes val destination:Int
|
||||||
) {
|
) {
|
||||||
/* ordered by when they need to be added to the speed dial (i.e. reverse display order) */
|
/* ordered by when they need to be added to the speed dial (i.e. reverse display order) */
|
||||||
// REQUEST(
|
|
||||||
// R.id.fab_request,
|
|
||||||
// R.drawable.ic_receipt_24dp,
|
|
||||||
// R.color.icon_request,
|
|
||||||
// R.string.destination_menu_label_request,
|
|
||||||
// R.id.nav_request_fragment
|
|
||||||
// ),
|
|
||||||
HISTORY(
|
HISTORY(
|
||||||
R.id.fab_history,
|
R.id.fab_history,
|
||||||
R.drawable.ic_history_24dp,
|
R.drawable.ic_history_24dp,
|
||||||
|
@ -551,14 +544,12 @@ class HomeFragment : BaseFragment(), SwipeRefreshLayout.OnRefreshListener, HomeP
|
||||||
fun fromId(id: Int): HomeFab? = values().firstOrNull { it.id == id }
|
fun fromId(id: Int): HomeFab? = values().firstOrNull { it.id == id }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//// ---------------------------------------------------------------------------------------------------------------------
|
//// ---------------------------------------------------------------------------------------------------------------------
|
||||||
//// TODO: Delete these test functions
|
//// TODO: Delete these test functions
|
||||||
//// ---------------------------------------------------------------------------------------------------------------------
|
//// ---------------------------------------------------------------------------------------------------------------------
|
||||||
//
|
|
||||||
var empty = false
|
|
||||||
val delay = 50L
|
val delay = 50L
|
||||||
lateinit var headerEmptyViews: Array<View>
|
lateinit var headerEmptyViews: Array<View>
|
||||||
lateinit var headerFullViews: Array<View>
|
lateinit var headerFullViews: Array<View>
|
||||||
|
@ -569,9 +560,6 @@ class HomeFragment : BaseFragment(), SwipeRefreshLayout.OnRefreshListener, HomeP
|
||||||
binding.includeHeader.containerHomeHeader.progress = binding.includeHeader.containerHomeHeader.progress - 0.1f
|
binding.includeHeader.containerHomeHeader.progress = binding.includeHeader.containerHomeHeader.progress - 0.1f
|
||||||
}, delay * 2)
|
}, delay * 2)
|
||||||
}
|
}
|
||||||
// internal fun toggle(isEmpty: Boolean) {
|
|
||||||
// toggleValues(isEmpty)
|
|
||||||
// }
|
|
||||||
|
|
||||||
internal fun toggleViews(isEmpty: Boolean) {
|
internal fun toggleViews(isEmpty: Boolean) {
|
||||||
twig("toggling views to isEmpty == $isEmpty")
|
twig("toggling views to isEmpty == $isEmpty")
|
||||||
|
@ -608,49 +596,6 @@ class HomeFragment : BaseFragment(), SwipeRefreshLayout.OnRefreshListener, HomeP
|
||||||
view?.postDelayed(::forceRedraw, delay * 2)
|
view?.postDelayed(::forceRedraw, delay * 2)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: get rid of all of this and consider two different fragments for the header, instead
|
|
||||||
internal fun toggleViews2(isEmpty: Boolean) {
|
|
||||||
var action: () -> Unit
|
|
||||||
if (isEmpty) {
|
|
||||||
action = {
|
|
||||||
// group_empty_view_items.visibility = View.VISIBLE
|
|
||||||
// group_full_view_items.visibility = View.GONE
|
|
||||||
headerFullViews.forEach { binding.includeHeader.containerHomeHeader.removeView(it) }
|
|
||||||
headerEmptyViews.forEach {
|
|
||||||
tryIgnore {
|
|
||||||
binding.includeHeader.containerHomeHeader.addView(it)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
action = {
|
|
||||||
// group_empty_view_items.visibility = View.GONE
|
|
||||||
// group_full_view_items.visibility = View.VISIBLE
|
|
||||||
headerEmptyViews.forEach { binding.includeHeader.containerHomeHeader.removeView(it) }
|
|
||||||
headerFullViews.forEach {
|
|
||||||
tryIgnore {
|
|
||||||
binding.includeHeader.containerHomeHeader.addView(it)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
view?.postDelayed({
|
|
||||||
action()
|
|
||||||
viewsInitialized = true
|
|
||||||
}, delay)
|
|
||||||
// TODO: the motion layout does not begin in the right state for some reason. Debug this later.
|
|
||||||
view?.postDelayed(::forceRedraw, delay * 2)
|
|
||||||
}
|
|
||||||
|
|
||||||
// internal fun toggleValues(isEmpty: Boolean) {
|
|
||||||
// empty = isEmpty
|
|
||||||
// if(empty) {
|
|
||||||
// reduceValue()
|
|
||||||
// } else {
|
|
||||||
// increaseValue(Random.nextDouble(20.0, 100.0))
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
inner class HomeTransitionListener : Transition.TransitionListener {
|
inner class HomeTransitionListener : Transition.TransitionListener {
|
||||||
override fun onTransitionStart(transition: Transition) {
|
override fun onTransitionStart(transition: Transition) {
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
/*
|
/*
|
||||||
|
* Copyright (C) 2019 Electric Coin Company
|
||||||
|
*
|
||||||
* Copyright (C) 2016 The Android Open Source Project
|
* Copyright (C) 2016 The Android Open Source Project
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@ -7,13 +9,14 @@
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
|
* This file has been modified by Electric Coin Company to translate it into Kotlin and add support for Firebase vision.
|
||||||
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package cash.z.android.cameraview
|
package cash.z.android.cameraview
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
/*
|
/*
|
||||||
|
* Copyright (C) 2019 Electric Coin Company
|
||||||
|
*
|
||||||
* Copyright (C) 2016 The Android Open Source Project
|
* Copyright (C) 2016 The Android Open Source Project
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@ -7,6 +9,8 @@
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
|
* This file has been modified by Electric Coin Company to translate it into Kotlin and add support for Firebase vision.
|
||||||
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
/*
|
/*
|
||||||
|
* Copyright (C) 2019 Electric Coin Company
|
||||||
|
*
|
||||||
* Copyright (C) 2016 The Android Open Source Project
|
* Copyright (C) 2016 The Android Open Source Project
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@ -7,6 +9,8 @@
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
|
* This file has been modified by Electric Coin Company to translate it into Kotlin and add support for Firebase vision.
|
||||||
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
/*
|
/*
|
||||||
|
* Copyright (C) 2019 Electric Coin Company
|
||||||
|
*
|
||||||
* Copyright (C) 2016 The Android Open Source Project
|
* Copyright (C) 2016 The Android Open Source Project
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@ -7,6 +9,8 @@
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
|
* This file has been modified by Electric Coin Company to translate it into Kotlin and add support for Firebase vision.
|
||||||
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
/*
|
/*
|
||||||
|
* Copyright (C) 2019 Electric Coin Company
|
||||||
|
*
|
||||||
* Copyright (C) 2016 The Android Open Source Project
|
* Copyright (C) 2016 The Android Open Source Project
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@ -7,6 +9,8 @@
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
|
* This file has been modified by Electric Coin Company to translate it into Kotlin and add support for Firebase vision.
|
||||||
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
/*
|
/*
|
||||||
|
* Copyright (C) 2019 Electric Coin Company
|
||||||
|
*
|
||||||
* Copyright (C) 2016 The Android Open Source Project
|
* Copyright (C) 2016 The Android Open Source Project
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@ -7,6 +9,8 @@
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
|
* This file has been modified by Electric Coin Company to translate it into Kotlin and add support for Firebase vision.
|
||||||
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
/*
|
/*
|
||||||
|
* Copyright (C) 2019 Electric Coin Company
|
||||||
|
*
|
||||||
* Copyright (C) 2016 The Android Open Source Project
|
* Copyright (C) 2016 The Android Open Source Project
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@ -7,6 +9,8 @@
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
|
* This file has been modified by Electric Coin Company to translate it into Kotlin and add support for Firebase vision.
|
||||||
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
/*
|
/*
|
||||||
|
* Copyright (C) 2019 Electric Coin Company
|
||||||
|
*
|
||||||
* Copyright (C) 2016 The Android Open Source Project
|
* Copyright (C) 2016 The Android Open Source Project
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@ -7,6 +9,8 @@
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
|
* This file has been modified by Electric Coin Company to translate it into Kotlin and add support for Firebase vision.
|
||||||
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
/*
|
/*
|
||||||
|
* Copyright (C) 2019 Electric Coin Company
|
||||||
|
*
|
||||||
* Copyright (C) 2016 The Android Open Source Project
|
* Copyright (C) 2016 The Android Open Source Project
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@ -7,6 +9,8 @@
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
|
* This file has been modified by Electric Coin Company to translate it into Kotlin and add support for Firebase vision.
|
||||||
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
/*
|
/*
|
||||||
|
* Copyright (C) 2019 Electric Coin Company
|
||||||
|
*
|
||||||
* Copyright (C) 2016 The Android Open Source Project
|
* Copyright (C) 2016 The Android Open Source Project
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@ -7,6 +9,8 @@
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
|
* This file has been modified by Electric Coin Company to translate it into Kotlin and add support for Firebase vision.
|
||||||
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
/*
|
/*
|
||||||
|
* Copyright (C) 2019 Electric Coin Company
|
||||||
|
*
|
||||||
* Copyright (C) 2016 The Android Open Source Project
|
* Copyright (C) 2016 The Android Open Source Project
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@ -7,6 +9,8 @@
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
|
* This file has been modified by Electric Coin Company to translate it into Kotlin and add support for Firebase vision.
|
||||||
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
|
Loading…
Reference in New Issue