Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
android_cleaner
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
android
android_cleaner
Commits
8235460e
Commit
8235460e
authored
Sep 14, 2020
by
mengcuiguang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
首页添加网络、网速,自启动优化
parent
622a8d13
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
252 additions
and
33 deletions
+252
-33
build.gradle
cleaner/app/build.gradle
+1
-0
AndroidManifest.xml
cleaner/app/src/main/AndroidManifest.xml
+14
-17
HomeAdapter.kt
...c/main/java/com/mints/cleaner/adapter/home/HomeAdapter.kt
+30
-0
PixelActivity.kt
...main/java/com/mints/cleaner/service/keep/PixelActivity.kt
+2
-2
MainFragment.kt
...er/app/src/main/java/com/mints/cleaner/ui/MainFragment.kt
+1
-1
NavigationActivity.kt
.../src/main/java/com/mints/cleaner/ui/NavigationActivity.kt
+8
-0
HomeFragment.kt
...p/src/main/java/com/mints/cleaner/ui/home/HomeFragment.kt
+47
-1
LoginActivity.kt
...src/main/java/com/mints/cleaner/ui/login/LoginActivity.kt
+17
-0
NetSpeed.kt
cleaner/app/src/main/java/com/mints/cleaner/util/NetSpeed.kt
+34
-0
NetWorkUtils.kt
.../app/src/main/java/com/mints/cleaner/util/NetWorkUtils.kt
+10
-0
WeakHandler.kt
...r/app/src/main/java/com/mints/cleaner/util/WeakHandler.kt
+27
-0
fragment_clean.xml
cleaner/app/src/main/res/layout/fragment_clean.xml
+1
-0
item_clean_top.xml
cleaner/app/src/main/res/layout/item_clean_top.xml
+53
-12
ic_wifi.png
cleaner/app/src/main/res/mipmap-xhdpi/ic_wifi.png
+0
-0
strings.xml
cleaner/app/src/main/res/values/strings.xml
+5
-0
Deps.kt
cleaner/buildSrc/src/main/java/mints/dependencies/Deps.kt
+2
-0
No files found.
cleaner/app/build.gradle
View file @
8235460e
...
...
@@ -169,6 +169,7 @@ dependencies {
implementation
Deps
.
koin_androidx_viewmodel
implementation
Deps
.
grandcentrix_sharedPreference
implementation
Deps
.
rxpermissions
// BASE64Decoder
implementation
files
(
'libs/sun.misc.BASE64Decoder.jar'
)
...
...
cleaner/app/src/main/AndroidManifest.xml
View file @
8235460e
...
...
@@ -2,10 +2,13 @@
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
package=
"com.mints.cleaner"
>
<uses-permission
android:name=
"android.permission.WRITE_EXTERNAL_STORAGE"
/>
<uses-permission
android:name=
"android.permission.ACCESS_NETWORK_STATE"
/>
<uses-permission
android:name=
"android.permission.INTERNET"
/>
<uses-permission
android:name=
"android.permission.REQUEST_INSTALL_PACKAGES"
/>
<uses-permission
android:name=
"android.permission.ACCESS_WIFI_STATE"
/>
<uses-permission
android:name=
"android.permission.ACCESS_NETWORK_STATE"
/>
<uses-permission
android:name=
"android.permission.WRITE_EXTERNAL_STORAGE"
/>
<uses-permission
android:name=
"android.permission.ACCESS_COARSE_LOCATION"
/>
<uses-permission
android:name=
"android.permission.ACCESS_BACKGROUND_LOCATION"
/>
<application
android:name=
".App"
...
...
@@ -22,12 +25,17 @@
<activity
android:name=
".ui.albumClean.AlbumCleanActivity"
/>
<activity
android:name=
".ui.
multiClean.MultiClea
nActivity"
android:name=
".ui.
Navigatio
nActivity"
android:configChanges=
"orientation|keyboardHidden|screenSize"
android:excludeFromRecents=
"true"
android:launchMode=
"singleTop"
android:noHistory=
"true"
android:screenOrientation=
"portrait"
></activity>
android:launchMode=
"singleTask"
android:screenOrientation=
"portrait"
>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<!-- 屏幕适配 -->
<meta-data
...
...
@@ -42,17 +50,6 @@
android:launchMode=
"singleTop"
android:theme=
"@style/CustomerTransparentTheme"
/>
<activity
android:name=
".ui.NavigationActivity"
android:launchMode=
"singleTask"
>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<provider
android:name=
"androidx.core.content.FileProvider"
android:authorities=
"${applicationId}.fileprovider"
...
...
cleaner/app/src/main/java/com/mints/cleaner/adapter/home/HomeAdapter.kt
View file @
8235460e
package
com.mints.cleaner.adapter.home
import
android.text.TextUtils
import
android.widget.GridView
import
android.widget.ImageView
import
android.widget.SimpleAdapter
...
...
@@ -8,6 +9,8 @@ import com.chad.library.adapter.base.BaseMultiItemQuickAdapter
import
com.chad.library.adapter.base.BaseViewHolder
import
com.mints.cleaner.R
import
com.mints.cleaner.util.LogUtil
import
com.mints.cleaner.util.NetSpeed
import
com.mints.cleaner.util.NetWorkUtils
class
HomeAdapter
:
BaseMultiItemQuickAdapter
<
HomeMultiItem
,
BaseViewHolder
>
{
...
...
@@ -21,6 +24,8 @@ class HomeAdapter : BaseMultiItemQuickAdapter<HomeMultiItem, BaseViewHolder> {
when
(
helper
.
itemViewType
)
{
HomeMultiItem
.
ITEM_TOP
->
{
helper
.
addOnClickListener
(
R
.
id
.
btn_clean
)
setCleanTopItemStyle
(
helper
)
}
HomeMultiItem
.
ITEM_MID
->
{
val
gridView
=
helper
.
getView
<
GridView
>(
R
.
id
.
gv_clean
)
...
...
@@ -48,6 +53,31 @@ class HomeAdapter : BaseMultiItemQuickAdapter<HomeMultiItem, BaseViewHolder> {
}
}
/**
* top样式
*/
private
fun
setCleanTopItemStyle
(
helper
:
BaseViewHolder
)
{
// 是否连网
val
isNetwork
=
NetWorkUtils
.
isNetworkAvailable
(
mContext
)
if
(
isNetwork
)
{
// 是否连接wifi
val
wifiName
=
NetWorkUtils
.
getConnectWifiSsid
(
mContext
)
if
(!
TextUtils
.
isEmpty
(
wifiName
)
&&
wifiName
!!
.
contains
(
mContext
.
getString
(
R
.
string
.
no_wifi
)))
{
helper
.
setText
(
R
.
id
.
tv_wifi
,
mContext
.
getString
(
R
.
string
.
no_authorize
))
helper
.
setText
(
R
.
id
.
tv_wifi_status
,
mContext
.
getString
(
R
.
string
.
no_connect_wifi
))
}
else
{
helper
.
setText
(
R
.
id
.
tv_wifi
,
wifiName
)
helper
.
setText
(
R
.
id
.
tv_wifi_status
,
mContext
.
getString
(
R
.
string
.
connect_wifi
))
}
helper
.
setText
(
R
.
id
.
tv_wifi_speed
,
NetSpeed
.
getNetSpeed
(
mContext
))
}
else
{
helper
.
setText
(
R
.
id
.
tv_wifi
,
mContext
.
getString
(
R
.
string
.
no_network
))
helper
.
setText
(
R
.
id
.
tv_wifi_status
,
mContext
.
getString
(
R
.
string
.
no_connect_wifi
))
}
}
private
var
onGridViewItemClickListener
:
OnGridViewItemClickListener
?
=
null
fun
setOnGridViewItemClickListener
(
listener
:
OnGridViewItemClickListener
?)
{
...
...
cleaner/app/src/main/java/com/mints/cleaner/service/keep/PixelActivity.kt
View file @
8235460e
package
com.mints.cleaner.service.keep
import
android.app.Activity
import
android.os.Bundle
import
android.view.Gravity
import
androidx.appcompat.app.AppCompatActivity
/**
* 一像素的Activity
*/
class
PixelActivity
:
A
ppCompatA
ctivity
()
{
class
PixelActivity
:
Activity
()
{
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
...
...
cleaner/app/src/main/java/com/mints/cleaner/ui/MainFragment.kt
View file @
8235460e
...
...
@@ -54,7 +54,7 @@ class MainFragment : BaseFragment() {
private
fun
initViewPager
()
{
mainViewpager
.
isUserInputEnabled
=
false
mainViewpager
.
offscreenPageLimit
=
2
mainViewpager
.
offscreenPageLimit
=
1
mainViewpager
.
adapter
=
object
:
FragmentStateAdapter
(
this
)
{
override
fun
createFragment
(
position
:
Int
)
=
fragmentList
[
position
]
...
...
cleaner/app/src/main/java/com/mints/cleaner/ui/NavigationActivity.kt
View file @
8235460e
package
com.mints.cleaner.ui
import
android.content.Intent
import
android.view.KeyEvent
import
com.mints.cleaner.App
import
com.mints.cleaner.R
import
com.mints.cleaner.service.ScreenService
...
...
@@ -17,4 +18,11 @@ class NavigationActivity : BaseActivity() {
override
fun
initData
()
{
}
override
fun
onKeyDown
(
keyCode
:
Int
,
event
:
KeyEvent
?):
Boolean
{
when
(
keyCode
)
{
// 直接返回后台
KeyEvent
.
KEYCODE_BACK
->
moveTaskToBack
(
true
)
}
return
true
}
}
\ No newline at end of file
cleaner/app/src/main/java/com/mints/cleaner/ui/home/HomeFragment.kt
View file @
8235460e
package
com.mints.cleaner.ui.home
import
android.os.Message
import
android.view.LayoutInflater
import
android.view.View
import
android.widget.Toast
import
androidx.recyclerview.widget.DefaultItemAnimator
import
com.mints.cleaner.R
import
com.mints.cleaner.adapter.home.HomeAdapter
import
com.mints.cleaner.databinding.FragmentCleanBinding
...
...
@@ -11,18 +13,28 @@ import com.mints.cleaner.ui.PreviewActivity
import
com.mints.cleaner.ui.albumClean.AlbumCleanActivity
import
com.mints.cleaner.ui.main.MainViewModel
import
com.mints.cleaner.ui.multiClean.MultiCleanActivity
import
com.mints.cleaner.util.LogUtil
import
com.mints.cleaner.util.NetSpeed
import
com.mints.cleaner.util.WeakHandler
import
com.mints.core.base.BaseVMFragment
import
com.mints.ktx.ext.startKtxActivity
import
com.mints.ktx.ext.toast
import
kotlinx.android.synthetic.main.fragment_clean.*
import
org.koin.androidx.viewmodel.ext.android.viewModel
/**
* 主页面
*/
class
HomeFragment
:
BaseVMFragment
<
FragmentCleanBinding
>(
R
.
layout
.
fragment_clean
)
{
class
HomeFragment
:
BaseVMFragment
<
FragmentCleanBinding
>(
R
.
layout
.
fragment_clean
),
WeakHandler
.
IHandler
{
private
val
mainViewModel
by
viewModel
<
MainViewModel
>()
private
val
cleanAdapter
by
lazy
{
HomeAdapter
(
mainViewModel
.
repository
.
getHomeData
())
}
private
val
speedHandler
by
lazy
{
WeakHandler
(
this
)
}
// 是否暂停
private
var
speedIsPause
:
Boolean
=
false
override
fun
initView
()
{
binding
.
run
{
...
...
@@ -40,9 +52,32 @@ class HomeFragment : BaseVMFragment<FragmentCleanBinding>(R.layout.fragment_clea
}
initRecyclerView
()
}
override
fun
onResume
()
{
super
.
onResume
()
LogUtil
.
e
(
"onResume"
+
speedIsPause
)
if
(!
speedIsPause
)
{
speedIsPause
=
true
speedHandler
.
sendEmptyMessageDelayed
(
NetSpeed
.
SPEED_MSG
,
NetSpeed
.
SPEED_INTERVAL
)
}
}
override
fun
onPause
()
{
super
.
onPause
()
LogUtil
.
e
(
"onPause"
+
speedIsPause
)
speedIsPause
=
false
}
private
fun
initRecyclerView
()
{
// 解决动画产生的item闪屏
(
rv_clean
.
getItemAnimator
()
as
DefaultItemAnimator
).
supportsChangeAnimations
=
false
cleanAdapter
.
run
{
addFooterView
(
LayoutInflater
.
from
(
activity
).
inflate
(
R
.
layout
.
home_footer
,
null
))
...
...
@@ -114,4 +149,15 @@ class HomeFragment : BaseVMFragment<FragmentCleanBinding>(R.layout.fragment_clea
}
override
fun
handleMsg
(
msg
:
Message
?)
{
if
(
speedIsPause
)
{
msg
?.
let
{
if
(
it
.
what
==
NetSpeed
.
SPEED_MSG
)
{
cleanAdapter
.
notifyItemChanged
(
0
)
speedHandler
.
sendEmptyMessageDelayed
(
NetSpeed
.
SPEED_MSG
,
NetSpeed
.
SPEED_INTERVAL
)
}
}
}
}
}
\ No newline at end of file
cleaner/app/src/main/java/com/mints/cleaner/ui/login/LoginActivity.kt
View file @
8235460e
package
com.mints.cleaner.ui.login
import
android.Manifest
import
android.os.Bundle
import
android.text.TextUtils
import
com.mints.cleaner.R
import
com.mints.cleaner.databinding.ActivityLoginBinding
import
com.mints.core.base.BaseVMActivity
...
...
@@ -7,6 +10,7 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi
import
org.koin.androidx.viewmodel.ext.android.viewModel
import
androidx.lifecycle.Observer
import
com.mints.cleaner.util.LogUtil
import
com.tbruyelle.rxpermissions.RxPermissions
import
kotlinx.android.synthetic.main.activity_login.*
...
...
@@ -19,6 +23,19 @@ class LoginActivity : BaseVMActivity() {
binding
.
run
{
viewModel
=
loginViewModel
}
// RxPermissions(this@LoginActivity)
// .request(
// Manifest.permission.ACCESS_COARSE_LOCATION,
// Manifest.permission.ACCESS_FINE_LOCATION
// )
// .subscribe { granted: Boolean ->
// if (granted) {
// // 已授权
// } else {
// //未授权
// }
// }
}
override
fun
initData
()
{
...
...
cleaner/app/src/main/java/com/mints/cleaner/util/NetSpeed.kt
0 → 100644
View file @
8235460e
package
com.mints.cleaner.util
import
android.content.Context
import
android.net.TrafficStats
/**
* 获取网速
*/
object
NetSpeed
{
val
SPEED_INTERVAL
:
Long
=
1000
//获取网速速度 1秒
val
SPEED_MSG
=
101
private
var
lastTotalRxBytes
:
Long
=
0
private
var
lastTimeStamp
:
Long
=
0
/**
* 获取网速
*/
fun
getNetSpeed
(
context
:
Context
):
String
{
val
nowTotalRxBytes
=
getTotalRxBytes
(
context
.
applicationInfo
.
uid
)
val
nowTimeStamp
=
System
.
currentTimeMillis
()
val
speed
=
(
nowTotalRxBytes
-
lastTotalRxBytes
)
*
1000
/
(
nowTimeStamp
-
lastTimeStamp
)
//毫秒转换
lastTimeStamp
=
nowTimeStamp
lastTotalRxBytes
=
nowTotalRxBytes
return
"$speed kb/s"
}
private
fun
getTotalRxBytes
(
uid
:
Int
):
Long
{
return
if
(
TrafficStats
.
getUidRxBytes
(
uid
)
==
TrafficStats
.
UNSUPPORTED
.
toLong
())
0
else
TrafficStats
.
getTotalRxBytes
()
/
1024
//转为KB
}
}
\ No newline at end of file
cleaner/app/src/main/java/com/mints/cleaner/util/NetWorkUtils.kt
View file @
8235460e
package
com.mints.cleaner.util
import
android.content.Context
import
android.content.Context.WIFI_SERVICE
import
android.net.ConnectivityManager
import
android.net.wifi.WifiManager
class
NetWorkUtils
{
...
...
@@ -13,5 +16,12 @@ class NetWorkUtils {
val
info
=
manager
.
activeNetworkInfo
return
!(
null
==
info
||
!
info
.
isAvailable
)
}
fun
getConnectWifiSsid
(
context
:
Context
):
String
?
{
val
wifiManager
=
context
.
getSystemService
(
WIFI_SERVICE
)
as
WifiManager
val
wifiInfo
=
wifiManager
.
connectionInfo
return
wifiInfo
.
ssid
}
}
}
\ No newline at end of file
cleaner/app/src/main/java/com/mints/cleaner/util/WeakHandler.kt
0 → 100644
View file @
8235460e
package
com.mints.cleaner.util
import
android.os.Handler
import
android.os.Looper
import
android.os.Message
import
java.lang.ref.WeakReference
class
WeakHandler
:
Handler
{
interface
IHandler
{
fun
handleMsg
(
msg
:
Message
?)
}
private
val
mRef
:
WeakReference
<
IHandler
>
constructor
(
handler
:
IHandler
)
{
mRef
=
WeakReference
(
handler
)
}
constructor
(
looper
:
Looper
?,
handler
:
IHandler
)
:
super
(
looper
)
{
mRef
=
WeakReference
(
handler
)
}
override
fun
handleMessage
(
msg
:
Message
)
{
val
handler
=
mRef
.
get
()
if
(
handler
!=
null
&&
msg
!=
null
)
handler
.
handleMsg
(
msg
)
}
}
\ No newline at end of file
cleaner/app/src/main/res/layout/fragment_clean.xml
View file @
8235460e
...
...
@@ -27,6 +27,7 @@
app:title=
"@{title}"
/>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv_clean"
adapter=
"@{adapter}"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
...
...
cleaner/app/src/main/res/layout/item_clean_top.xml
View file @
8235460e
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
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:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/colorAccent"
android:paddingTop=
"20dp"
android:paddingBottom=
"20dp"
>
<
com.mints.cleaner.widget.CircleProgress
android:id=
"@+id/
cp
_wifi"
<
FrameLayout
android:id=
"@+id/
fl
_wifi"
android:layout_width=
"200dp"
android:layout_height=
"200dp"
android:layout_centerHorizontal=
"true"
app:antiAlias=
"true"
app:arcWidth=
"14dp"
app:bgArcColor=
"#E8E8E8"
app:bgArcWidth=
"14dp"
app:maxValue=
"16"
app:startAngle=
"135"
app:sweepAngle=
"270"
app:value=
"0"
/>
android:layout_centerHorizontal=
"true"
>
<com.mints.cleaner.widget.CircleProgress
android:layout_width=
"200dp"
android:layout_height=
"200dp"
app:antiAlias=
"true"
app:arcWidth=
"14dp"
app:bgArcColor=
"#fff"
app:bgArcWidth=
"14dp"
app:maxValue=
"16"
app:startAngle=
"135"
app:sweepAngle=
"270"
app:value=
"0"
/>
<LinearLayout
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:gravity=
"center_horizontal"
android:orientation=
"vertical"
>
<ImageView
android:layout_width=
"50dp"
android:layout_height=
"50dp"
android:src=
"@mipmap/ic_wifi"
></ImageView>
<TextView
android:id=
"@+id/tv_wifi"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"6dp"
android:textColor=
"@color/white"
android:textSize=
"20sp"
tools:text=
"test"
></TextView>
<TextView
android:id=
"@+id/tv_wifi_status"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"8dp"
android:text=
"Wifi 已连接"
android:textColor=
"@color/white"
android:textSize=
"12sp"
></TextView>
</LinearLayout>
</FrameLayout>
<Button
android:id=
"@+id/btn_clean"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_below=
"@id/
cp
_wifi"
android:layout_below=
"@id/
fl
_wifi"
android:layout_centerHorizontal=
"true"
android:background=
"@drawable/btn_circle"
android:paddingStart=
"30dp"
...
...
cleaner/app/src/main/res/mipmap-xhdpi/ic_wifi.png
0 → 100644
View file @
8235460e
3.52 KB
cleaner/app/src/main/res/values/strings.xml
View file @
8235460e
...
...
@@ -44,5 +44,10 @@
<string
name=
"selector_all_image"
>
全部图片
</string>
<string
name=
"empty_text"
>
正在扫描...
</string>
<string
name=
"no_wifi"
>
unknown ssid
</string>
<string
name=
"no_authorize"
>
未授权
</string>
<string
name=
"no_connect_wifi"
>
Wifi 未连接
</string>
<string
name=
"connect_wifi"
>
Wifi 已连接
</string>
<string
name=
"no_network"
>
无网络
</string>
</resources>
\ No newline at end of file
cleaner/buildSrc/src/main/java/mints/dependencies/Deps.kt
View file @
8235460e
...
...
@@ -45,6 +45,7 @@ object Versions {
const
val
grandcentrix_sharedPreference
=
"0.12.0"
const
val
retrofit_adapter_rxjava
=
"2.1.0"
const
val
orhanobut_logger
=
"2.2.0"
const
val
rxpermissions
=
"0.9.3@aar"
}
object
Deps
{
...
...
@@ -94,5 +95,6 @@ object Deps {
const
val
koin_androidx_viewmodel
=
"org.koin:koin-androidx-viewmodel:${Versions.koin}"
// 类似sharedPreference 可多进程间访问
const
val
grandcentrix_sharedPreference
=
"net.grandcentrix.tray:tray:${Versions.grandcentrix_sharedPreference}"
const
val
rxpermissions
=
"com.tbruyelle.rxpermissions:rxpermissions:${Versions.rxpermissions}"
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment