Skip to content

Commit

Permalink
permission check
Browse files Browse the repository at this point in the history
  • Loading branch information
jonashao committed May 31, 2017
1 parent 003ee89 commit 170b420
Show file tree
Hide file tree
Showing 9 changed files with 70 additions and 6 deletions.
1 change: 1 addition & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ dependencies {
compile "io.reactivex.rxjava2:rxandroid:$rxandroidVersion"
compile "io.reactivex.rxjava2:rxjava:$rxjavaVersion"
compile 'com.github.ajalt:timberkt:1.3.0'
compile 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.4@aar'

// compile 'com.squareup.picasso:picasso:2.5.2'

Expand Down
10 changes: 10 additions & 0 deletions app/src/main/java/com/junnanhao/next/data/SongsRepository.kt
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package com.junnanhao.next.data

import android.Manifest
import android.content.Context
import android.content.pm.PackageManager
import android.database.Cursor
import android.provider.MediaStore
import android.support.v4.content.ContentResolverCompat
import android.support.v4.content.ContextCompat
import android.support.v4.os.CancellationSignal
import com.junnanhao.next.data.model.Song
import io.reactivex.Observable
Expand All @@ -30,6 +33,12 @@ class SongsRepository @Inject constructor(var context: Context) : SongsDataSourc
private var cancellationSignal: CancellationSignal? = null

override fun scanMusic(): Observable<MutableList<Song>> {

if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
return Observable.fromArray()
}

cancellationSignal = CancellationSignal()
val cursor: Cursor = ContentResolverCompat.query(
context.contentResolver,
Expand Down Expand Up @@ -80,6 +89,7 @@ class SongsRepository @Inject constructor(var context: Context) : SongsDataSourc
t?.printStackTrace()
}


}


Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.junnanhao.next.ui.player

import android.Manifest
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.os.Handler
Expand All @@ -10,6 +11,9 @@ import com.junnanhao.next.R
import com.junnanhao.next.common.App
import com.junnanhao.next.ui.player.PlayerFragment
import javax.inject.Inject
import android.Manifest.permission
import com.tbruyelle.rxpermissions2.RxPermissions


/**
* An example full-screen activity that shows and hides the system UI (i.e.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.junnanhao.next.ui.player

import android.content.Context
import com.junnanhao.next.common.BasePresenter
import com.junnanhao.next.common.BaseView
import com.junnanhao.next.data.model.Song
Expand All @@ -14,6 +13,8 @@ interface PlayerContract {
interface View : BaseView<Presenter> {
fun showError()
fun showSongInfo(song: Song?)
fun showPermissionNotGranted()
fun showLoading()
}

interface Presenter : BasePresenter {
Expand Down
40 changes: 37 additions & 3 deletions app/src/main/java/com/junnanhao/next/ui/player/PlayerFragment.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.junnanhao.next.ui.player

import android.Manifest
import android.os.Bundle
import android.support.v4.app.Fragment
import android.view.LayoutInflater
Expand All @@ -24,9 +25,10 @@ import android.graphics.Canvas
import android.graphics.Color
import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.Drawable
import android.graphics.drawable.VectorDrawable
import android.support.v4.content.ContextCompat
import android.support.v7.graphics.Palette
import com.tbruyelle.rxpermissions2.RxPermissions
import kotlinx.android.synthetic.main.frag_player.*
import java.io.File
import java.io.FileInputStream

Expand Down Expand Up @@ -62,10 +64,12 @@ class PlayerFragment : Fragment(), PlayerContract.View {
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view: View = inflater!!.inflate(R.layout.frag_player, container, false)
ButterKnife.bind(this, view)
mPresenter.next()

checkPermission()
return view
}


override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mDetector = GestureDetectorCompat(context, object : GestureDetector.SimpleOnGestureListener() {
Expand Down Expand Up @@ -126,11 +130,12 @@ class PlayerFragment : Fragment(), PlayerContract.View {
}
}
if (mBitmapCover == null) {
val drawable: Drawable = ContextCompat.getDrawable(context, R.drawable.ic_music_note_black_24dp)
val drawable: Drawable = ContextCompat.getDrawable(context, R.drawable.ic_music)
mBitmapCover = drawable.toBitmap()
}

art.setImageBitmap(mBitmapCover)
art.scaleType = ImageView.ScaleType.CENTER_CROP

val palette = Palette.from(mBitmapCover).generate()
DarkVibrantColor = palette.getDarkVibrantColor(Color.GRAY)
Expand All @@ -139,7 +144,36 @@ class PlayerFragment : Fragment(), PlayerContract.View {
background.setBackgroundColor(DarkMutedColor)
title.setTextColor(LightVibrantColor)
artist.setTextColor(LightVibrantColor)
}

override fun showPermissionNotGranted() {
title.setText(getString(R.string.require_permission))
artist.setText(getString(R.string.permission_reason))
art.setImageResource(R.drawable.ic_permission)
art.scaleType = ImageView.ScaleType.CENTER
container.setOnClickListener {
checkPermission()
}
}

fun checkPermission() {
Timber.wtf("check permission")
RxPermissions(activity)
.request(Manifest.permission.READ_EXTERNAL_STORAGE)
.subscribe({ granted ->
if (granted) { // Always true pre-M
mPresenter.next()
showLoading()
container?.setOnClickListener { mPresenter.playPause() }
} else {
showPermissionNotGranted()
}
})
}

override fun showLoading() {
title.setText(getString(R.string.loading))
artist.setText("")
}

fun Drawable.toBitmap(): Bitmap {
Expand Down
File renamed without changes.
12 changes: 12 additions & 0 deletions app/src/main/res/drawable/ic_permission.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="192dp"
android:height="192dp"
android:viewportHeight="1024.0"
android:viewportWidth="1024.0">
<path
android:fillColor="#fff"
android:pathData="M512,332.8c-38.4,0 -76.8,32 -76.8,76.8v51.2h147.2v-57.6c6.4,-38.4 -32,-70.4 -70.4,-70.4zM512,544c-19.2,0 -32,12.8 -32,32 0,12.8 6.4,19.2 12.8,25.6v25.6c0,6.4 6.4,12.8 19.2,12.8 12.8,0 19.2,-6.4 19.2,-19.2v-19.2c6.4,-6.4 12.8,-19.2 12.8,-25.6 0,-19.2 -12.8,-32 -32,-32z"/>
<path
android:fillColor="#fff"
android:pathData="M851.2,179.2h-25.6c-12.8,0 -32,-6.4 -64,-12.8s-57.6,-12.8 -83.2,-25.6c-57.6,-19.2 -108.8,-44.8 -147.2,-70.4L512,51.2l-19.2,19.2c-38.4,25.6 -89.6,51.2 -147.2,76.8 -25.6,6.4 -51.2,19.2 -83.2,25.6s-51.2,6.4 -64,12.8 -19.2,0 -25.6,0h-38.4v377.6c0,44.8 12.8,89.6 38.4,140.8s57.6,89.6 96,128 76.8,64 121.6,89.6c44.8,25.6 83.2,32 115.2,32s70.4,-12.8 115.2,-32c44.8,-25.6 83.2,-51.2 121.6,-89.6 38.4,-38.4 70.4,-76.8 96,-128 25.6,-51.2 38.4,-96 38.4,-140.8L876.8,185.6l-25.6,-6.4zM672,678.4c0,12.8 -12.8,25.6 -25.6,25.6L377.6,704c-12.8,0 -25.6,-12.8 -25.6,-25.6L352,480c0,-12.8 12.8,-25.6 25.6,-25.6h25.6v-51.2c0,-64 51.2,-108.8 108.8,-108.8s108.8,51.2 108.8,108.8v51.2h25.6c12.8,0 25.6,12.8 25.6,25.6v198.4z"/>
</vector>
3 changes: 1 addition & 2 deletions app/src/main/res/layout/frag_player.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
<android.support.constraint.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:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
Expand All @@ -22,7 +21,7 @@
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_music_note_black_24dp"/>
app:srcCompat="@drawable/ic_music"/>

<TextView
android:id="@+id/tv_song_title"
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,7 @@
<string name="song_title">song title</string>
<string name="artist">artist</string>
<string name="album_art">album art</string>
<string name="loading">Loading...</string>
<string name="require_permission">Please grant permission</string>
<string name="permission_reason">to scan local music files</string>
</resources>

0 comments on commit 170b420

Please sign in to comment.