Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
M
majora-adr
Project
Project
Details
Activity
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
majora
majora-adr
Commits
5682062d
Commit
5682062d
authored
Jul 16, 2022
by
Administrator
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: 远程重播命令
parent
c99362bb
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
55 additions
and
8 deletions
+55
-8
build.gradle
app/build.gradle
+1
-1
MajoraClientService.java
...ava/com/virjar/majora/adr/majora/MajoraClientService.java
+53
-6
MainPanelFragment.java
...main/java/com/virjar/majora/adr/ui/MainPanelFragment.java
+1
-1
No files found.
app/build.gradle
View file @
5682062d
...
...
@@ -56,7 +56,7 @@ dependencies {
implementation
'com.android.support.constraint:constraint-layout:1.1.3'
// implementation 'org.apache.commons:commons-lang3:3.6'
// implementation 'commons-io:commons-io:2.6'
implementation
"com.virjar.majora:majora-sdk:1.
1
"
implementation
"com.virjar.majora:majora-sdk:1.
2
"
implementation
'eu.chainfire:libsuperuser:1.0.0.201608240809'
...
...
app/src/main/java/com/virjar/majora/adr/majora/MajoraClientService.java
View file @
5682062d
...
...
@@ -8,14 +8,42 @@ import com.virjar.majora.adr.utils.ClientIdentifier;
import
com.virjar.majora.adr.utils.CommonUtils
;
import
com.virjar.majora.adr.utils.PermissionUtils
;
import
com.virjar.majora.client.sdk.client.MajoraClient
;
import
com.virjar.majora.client.sdk.cmd.handlers.RedialHandler
;
import
com.virjar.majora.client.sdk.log.MajoraLogger
;
import
java.util.Map
;
import
eu.chainfire.libsuperuser.Shell
;
public
class
MajoraClientService
{
private
static
boolean
started
=
false
;
private
static
MajoraClient
majoraClient
;
private
static
class
RemoteRedialOperator
implements
RedialHandler
.
RedialOperator
{
@Override
public
String
envOk
()
{
if
(!
Shell
.
SU
.
available
())
{
// 没有root权限,那就无法进行飞行模式切换
return
"redial need rot permission"
;
}
return
null
;
}
@Override
public
void
doRedial
(
Map
<
String
,
String
>
param
)
{
String
offlineWaitMilisStr
=
param
.
get
(
"offlineWaitMilis"
);
int
offlineWaitMilis
=
0
;
if
(
offlineWaitMilisStr
!=
null
)
{
try
{
offlineWaitMilis
=
Integer
.
parseInt
(
offlineWaitMilisStr
);
}
catch
(
NumberFormatException
ignore
)
{
}
}
reDial
(
offlineWaitMilis
);
}
}
// 重播任务定时器
private
static
class
RedialThread
extends
Thread
{
private
static
final
RedialThread
mInstance
=
new
RedialThread
();
...
...
@@ -42,7 +70,7 @@ public class MajoraClientService {
return
;
}
if
(
autoRedial
)
{
reDial
();
reDial
(
2000
);
}
}
}
...
...
@@ -67,25 +95,41 @@ public class MajoraClientService {
}
public
static
void
reDial
()
{
public
static
void
reDial
(
int
offlineWaitMilis
)
{
if
(!
Shell
.
SU
.
available
())
{
// 没有root权限,那就无法进行飞行模式切换
return
;
}
if
(
offlineWaitMilis
>
20_000
)
{
offlineWaitMilis
=
20_000
;
}
if
(
majoraClient
==
null
)
{
reDialI
nterna
l
();
reDialI
mp
l
();
}
else
{
majoraClient
.
prepareReDial
(
MajoraClientService:
:
reDialInternal
);
int
finalOfflineWaitMilis
=
offlineWaitMilis
;
majoraClient
.
prepareReDial
(()
->
new
Thread
(
"redial-thread"
)
{
@Override
public
void
run
()
{
if
(
finalOfflineWaitMilis
>
0
)
{
try
{
// 重播的时候,先摘除流量,等待一秒的时间
Thread
.
sleep
(
finalOfflineWaitMilis
);
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
}
reDialImpl
();
}
}.
start
());
}
}
private
static
void
reDialI
nterna
l
()
{
private
static
void
reDialI
mp
l
()
{
try
{
Shell
.
SU
.
run
(
"settings put global airplane_mode_on 1 && am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true"
);
Thread
.
sleep
(
5000
);
Shell
.
SU
.
run
(
"settings put global airplane_mode_on 0 && am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false"
);
}
catch
(
Exception
e
)
{
MajoraLogger
.
getLogger
().
info
(
"reDial error"
,
e
);
}
...
...
@@ -97,6 +141,9 @@ public class MajoraClientService {
int
serverPort
=
CommonUtils
.
toInt
(
spf
.
getString
(
"server_port"
,
"5879"
),
5879
);
majoraClient
=
new
MajoraClient
(
serverHost
,
serverPort
,
ClientIdentifier
.
id
());
majoraClient
.
setDeviceAccount
(
spf
.
getString
(
"account_identifier"
,
""
));
RedialHandler
.
setRedialOperator
(
new
RemoteRedialOperator
());
UILoggerHelper
.
setupLogger
();
}
}
app/src/main/java/com/virjar/majora/adr/ui/MainPanelFragment.java
View file @
5682062d
...
...
@@ -62,7 +62,7 @@ public class MainPanelFragment extends Fragment {
Button
btnReDial
=
view
.
findViewById
(
R
.
id
.
btn_redial
);
btnReDial
.
setOnClickListener
(
view1
->
{
if
(
Shell
.
SU
.
available
())
{
MajoraClientService
.
reDial
();
MajoraClientService
.
reDial
(
1000
);
}
else
{
Toast
.
makeText
(
getActivity
(),
"重播需要root权限"
,
Toast
.
LENGTH_SHORT
).
show
();
}
...
...
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