Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
YGOMobile
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fallenstardust
YGOMobile
Commits
af90136a
Commit
af90136a
authored
Sep 29, 2021
by
feihuaduo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
适配da协议的加房1.0协议
parent
05e41da5
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
235 additions
and
150 deletions
+235
-150
mobile/src/main/AndroidManifest.xml
mobile/src/main/AndroidManifest.xml
+11
-0
mobile/src/main/java/cn/garymb/ygomobile/Constants.java
mobile/src/main/java/cn/garymb/ygomobile/Constants.java
+3
-2
mobile/src/main/java/cn/garymb/ygomobile/GameUriManager.java
mobile/src/main/java/cn/garymb/ygomobile/GameUriManager.java
+22
-13
mobile/src/main/java/cn/garymb/ygomobile/bean/Deck.java
mobile/src/main/java/cn/garymb/ygomobile/bean/Deck.java
+43
-72
mobile/src/main/java/cn/garymb/ygomobile/ui/home/HomeActivity.java
...c/main/java/cn/garymb/ygomobile/ui/home/HomeActivity.java
+6
-6
mobile/src/main/java/com/ourygo/assistant/base/listener/OnDeRoomListener.java
.../com/ourygo/assistant/base/listener/OnDeRoomListener.java
+8
-0
mobile/src/main/java/com/ourygo/assistant/service/DuelAssistantService.java
...va/com/ourygo/assistant/service/DuelAssistantService.java
+3
-3
mobile/src/main/java/com/ourygo/assistant/util/DuelAssistantManagement.java
...va/com/ourygo/assistant/util/DuelAssistantManagement.java
+29
-48
mobile/src/main/java/com/ourygo/assistant/util/Record.java
mobile/src/main/java/com/ourygo/assistant/util/Record.java
+12
-3
mobile/src/main/java/com/ourygo/assistant/util/UrlUtil.java
mobile/src/main/java/com/ourygo/assistant/util/UrlUtil.java
+45
-0
mobile/src/main/java/com/ourygo/assistant/util/YGODAUtil.java
...le/src/main/java/com/ourygo/assistant/util/YGODAUtil.java
+50
-0
mobile/src/main/res/values-ko/strings.xml
mobile/src/main/res/values-ko/strings.xml
+1
-1
mobile/src/main/res/values-zh/strings.xml
mobile/src/main/res/values-zh/strings.xml
+1
-1
mobile/src/main/res/values/strings.xml
mobile/src/main/res/values/strings.xml
+1
-1
No files found.
mobile/src/main/AndroidManifest.xml
View file @
af90136a
...
@@ -66,6 +66,17 @@
...
@@ -66,6 +66,17 @@
android:host=
"deck"
android:host=
"deck"
android:scheme=
"ygo"
/>
android:scheme=
"ygo"
/>
</intent-filter>
</intent-filter>
<intent-filter>
<action
android:name=
"android.intent.action.VIEW"
/>
<category
android:name=
"android.intent.category.DEFAULT"
/>
<category
android:name=
"android.intent.category.BROWSABLE"
/>
<data
android:host=
"room"
android:scheme=
"ygo"
/>
</intent-filter>
<intent-filter>
<intent-filter>
<action
android:name=
"android.intent.action.VIEW"
/>
<action
android:name=
"android.intent.action.VIEW"
/>
<category
android:name=
"android.intent.category.DEFAULT"
/>
<category
android:name=
"android.intent.category.DEFAULT"
/>
...
...
mobile/src/main/java/cn/garymb/ygomobile/Constants.java
View file @
af90136a
...
@@ -201,9 +201,10 @@ public interface Constants {
...
@@ -201,9 +201,10 @@ public interface Constants {
String
PATH_DECK
=
"/deck"
;
String
PATH_DECK
=
"/deck"
;
String
SCHEME_HTTP
=
"http"
;
String
SCHEME_HTTP
=
"http"
;
String
SCHEME_HTTPS
=
"https"
;
String
SCHEME_HTTPS
=
"https"
;
String
SCHEME_APP
=
"
ygo
"
;
String
SCHEME_APP
=
"
http
"
;
String
URI_HOST
=
"deck"
;
String
URI_HOST
=
"deck
.ourygo.top
"
;
String
URI_DECK
=
"deck"
;
String
URI_DECK
=
"deck"
;
String
URI_ROOM
=
"room"
;
String
QUERY_YDK
=
"ydk"
;
String
QUERY_YDK
=
"ydk"
;
String
QUERY_NAME
=
"name"
;
String
QUERY_NAME
=
"name"
;
...
...
mobile/src/main/java/cn/garymb/ygomobile/GameUriManager.java
View file @
af90136a
package
cn.garymb.ygomobile
;
package
cn.garymb.ygomobile
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
ACTION_OPEN_DECK
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
ACTION_OPEN_GAME
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
CORE_REPLAY_PATH
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
CORE_SINGLE_PATH
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
QUERY_NAME
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
REQUEST_SETTINGS_CODE
;
import
android.app.Activity
;
import
android.app.Activity
;
import
android.content.ContentUris
;
import
android.content.Intent
;
import
android.content.Intent
;
import
android.database.Cursor
;
import
android.net.Uri
;
import
android.net.Uri
;
import
android.os.Build
;
import
android.os.Build
;
import
android.os.Environment
;
import
android.os.Environment
;
import
android.os.ParcelFileDescriptor
;
import
android.os.ParcelFileDescriptor
;
import
android.provider.DocumentsContract
;
import
android.provider.MediaStore
;
import
android.provider.Settings
;
import
android.provider.Settings
;
import
android.text.TextUtils
;
import
android.text.TextUtils
;
import
android.util.Log
;
import
android.util.Log
;
import
android.widget.Toast
;
import
android.widget.Toast
;
import
androidx.documentfile.provider.DocumentFile
;
import
com.ourygo.assistant.base.listener.OnDeRoomListener
;
import
com.ourygo.assistant.util.YGODAUtil
;
import
java.io.File
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.FileInputStream
;
...
@@ -25,18 +29,13 @@ import cn.garymb.ygodata.YGOGameOptions;
...
@@ -25,18 +29,13 @@ import cn.garymb.ygodata.YGOGameOptions;
import
cn.garymb.ygomobile.bean.Deck
;
import
cn.garymb.ygomobile.bean.Deck
;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.ui.cards.DeckManagerActivity
;
import
cn.garymb.ygomobile.ui.cards.DeckManagerActivity
;
import
cn.garymb.ygomobile.ui.home.MainActivity
;
import
cn.garymb.ygomobile.ui.preference.SettingsActivity
;
import
cn.garymb.ygomobile.ui.preference.SettingsActivity
;
import
cn.garymb.ygomobile.utils.FileUtils
;
import
cn.garymb.ygomobile.utils.FileUtils
;
import
cn.garymb.ygomobile.utils.IOUtils
;
import
cn.garymb.ygomobile.utils.IOUtils
;
import
cn.garymb.ygomobile.utils.YGOUtil
;
import
ocgcore.DataManager
;
import
ocgcore.DataManager
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
ACTION_OPEN_DECK
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
ACTION_OPEN_GAME
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
CORE_REPLAY_PATH
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
CORE_SINGLE_PATH
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
QUERY_NAME
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
REQUEST_SETTINGS_CODE
;
public
class
GameUriManager
{
public
class
GameUriManager
{
private
Activity
activity
;
private
Activity
activity
;
...
@@ -167,7 +166,7 @@ public class GameUriManager {
...
@@ -167,7 +166,7 @@ public class GameUriManager {
local
=
new
File
(
AppsSettings
.
get
().
getResourcePath
()
+
"/temp"
,
name
);
local
=
new
File
(
AppsSettings
.
get
().
getResourcePath
()
+
"/temp"
,
name
);
}
}
if
(
local
.
exists
())
{
if
(
local
.
exists
())
{
Log
.
w
(
Constants
.
TAG
,
"Overwrite file "
+
local
.
getAbsolutePath
());
Log
.
w
(
Constants
.
TAG
,
"Overwrite file "
+
local
.
getAbsolutePath
());
}
}
if
(
remoteFile
!=
null
&&
TextUtils
.
equals
(
remoteFile
.
getAbsolutePath
(),
local
.
getAbsolutePath
()))
{
if
(
remoteFile
!=
null
&&
TextUtils
.
equals
(
remoteFile
.
getAbsolutePath
(),
local
.
getAbsolutePath
()))
{
//is same path
//is same path
...
@@ -248,6 +247,16 @@ public class GameUriManager {
...
@@ -248,6 +247,16 @@ public class GameUriManager {
File
file
=
deckInfo
.
saveTemp
(
AppsSettings
.
get
().
getDeckDir
());
File
file
=
deckInfo
.
saveTemp
(
AppsSettings
.
get
().
getDeckDir
());
DeckManagerActivity
.
start
(
activity
,
file
.
getAbsolutePath
());
DeckManagerActivity
.
start
(
activity
,
file
.
getAbsolutePath
());
}
}
}
else
if
(
Constants
.
URI_ROOM
.
equals
(
host
))
{
YGODAUtil
.
deRoomListener
(
uri
,
(
host1
,
port
,
password
,
exception
)
->
{
if
(
TextUtils
.
isEmpty
(
exception
))
if
(
activity
instanceof
MainActivity
)
{
MainActivity
mainActivity
=
(
MainActivity
)
activity
;
mainActivity
.
quickjoinRoom
(
host1
,
port
,
password
);
}
else
{
YGOUtil
.
show
(
exception
);
}
});
}
}
// else if (PATH_ROOM.equals(path)) {
// else if (PATH_ROOM.equals(path)) {
// try {
// try {
...
...
mobile/src/main/java/cn/garymb/ygomobile/bean/Deck.java
View file @
af90136a
...
@@ -39,8 +39,8 @@ public class Deck implements Parcelable {
...
@@ -39,8 +39,8 @@ public class Deck implements Parcelable {
return
new
Deck
[
size
];
return
new
Deck
[
size
];
}
}
};
};
private
static
final
int
YGO_PROTOCOL_0
=
0
;
private
static
final
int
YGO_
DECK_
PROTOCOL_0
=
0
;
private
static
final
int
YGO_PROTOCOL_1
=
1
;
private
static
final
int
YGO_
DECK_
PROTOCOL_1
=
1
;
private
static
final
String
CARD_DIVIDE_ID
=
"_"
;
private
static
final
String
CARD_DIVIDE_ID
=
"_"
;
private
static
final
String
CARD_DIVIDE_NUM
=
"*"
;
private
static
final
String
CARD_DIVIDE_NUM
=
"*"
;
...
@@ -58,8 +58,7 @@ public class Deck implements Parcelable {
...
@@ -58,8 +58,7 @@ public class Deck implements Parcelable {
public
Deck
(
String
name
,
Uri
uri
)
{
public
Deck
(
String
name
,
Uri
uri
)
{
this
(
name
);
this
(
name
);
Log
.
e
(
"DeckUU"
,
"Uri:"
+
uri
);
int
version
=
YGO_DECK_PROTOCOL_0
;
int
version
=
YGO_PROTOCOL_0
;
try
{
try
{
String
ygoType
=
uri
.
getQueryParameter
(
QUERY_YGO_TYPE
);
String
ygoType
=
uri
.
getQueryParameter
(
QUERY_YGO_TYPE
);
...
@@ -67,7 +66,7 @@ public class Deck implements Parcelable {
...
@@ -67,7 +66,7 @@ public class Deck implements Parcelable {
version
=
Integer
.
parseInt
(
uri
.
getQueryParameter
(
QUERY_VERSION
));
version
=
Integer
.
parseInt
(
uri
.
getQueryParameter
(
QUERY_VERSION
));
}
}
}
catch
(
Exception
exception
)
{
}
catch
(
Exception
exception
)
{
version
=
YGO_PROTOCOL_0
;
version
=
YGO_
DECK_
PROTOCOL_0
;
}
}
String
main
=
null
,
extra
=
null
,
side
=
null
;
String
main
=
null
,
extra
=
null
,
side
=
null
;
...
@@ -75,81 +74,53 @@ public class Deck implements Parcelable {
...
@@ -75,81 +74,53 @@ public class Deck implements Parcelable {
List
<
String
>
eList
=
new
ArrayList
<>();
List
<
String
>
eList
=
new
ArrayList
<>();
List
<
String
>
sList
=
new
ArrayList
<>();
List
<
String
>
sList
=
new
ArrayList
<>();
String
[]
mains
,
extras
,
sides
;
switch
(
version
)
{
switch
(
version
)
{
case
YGO_PROTOCOL_0:
case
YGO_DECK_PROTOCOL_0:
try
{
main
=
uri
.
getQueryParameter
(
QUERY_MAIN_ALL
);
main
=
uri
.
getQueryParameter
(
QUERY_MAIN_ALL
);
extra
=
uri
.
getQueryParameter
(
QUERY_EXTRA_ALL
);
String
[]
mains
=
main
.
split
(
CARD_DIVIDE_ID
);
side
=
uri
.
getQueryParameter
(
QUERY_SIDE_ALL
);
mList
.
addAll
(
Arrays
.
asList
(
mains
));
}
catch
(
Exception
ignored
)
{
}
try
{
mains
=
main
.
split
(
CARD_DIVIDE_ID
);
extra
=
uri
.
getQueryParameter
(
QUERY_EXTRA_ALL
);
mList
.
addAll
(
Arrays
.
asList
(
mains
));
String
[]
extras
=
extra
.
split
(
CARD_DIVIDE_ID
);
eList
.
addAll
(
Arrays
.
asList
(
extras
));
}
catch
(
Exception
ignored
)
{
}
try
{
side
=
uri
.
getQueryParameter
(
QUERY_SIDE_ALL
);
String
[]
sides
=
side
.
split
(
CARD_DIVIDE_ID
);
sList
.
addAll
(
Arrays
.
asList
(
sides
));
}
catch
(
Exception
ignored
)
{
}
extras
=
extra
.
split
(
CARD_DIVIDE_ID
);
eList
.
addAll
(
Arrays
.
asList
(
extras
));
sides
=
side
.
split
(
CARD_DIVIDE_ID
);
sList
.
addAll
(
Arrays
.
asList
(
sides
));
break
;
break
;
case
YGO_PROTOCOL_1:
case
YGO_DECK_PROTOCOL_1:
try
{
main
=
uri
.
getQueryParameter
(
QUERY_MAIN
);
main
=
uri
.
getQueryParameter
(
QUERY_MAIN
);
extra
=
uri
.
getQueryParameter
(
QUERY_EXTRA
);
for
(
int
i
=
0
;
i
<
main
.
length
()
/
6
;
i
++)
side
=
uri
.
getQueryParameter
(
QUERY_SIDE
);
mList
.
add
(
main
.
substring
(
i
*
6
,
i
*
6
+
6
));
}
catch
(
Exception
e
)
{
}
try
{
for
(
int
i
=
0
;
i
<
main
.
length
()
/
6
;
i
++)
extra
=
uri
.
getQueryParameter
(
QUERY_EXTRA
);
mList
.
add
(
main
.
substring
(
i
*
6
,
i
*
6
+
6
));
for
(
int
i
=
0
;
i
<
extra
.
length
()
/
6
;
i
++)
eList
.
add
(
extra
.
substring
(
i
*
6
,
i
*
6
+
6
));
}
catch
(
Exception
e
)
{
}
try
{
side
=
uri
.
getQueryParameter
(
QUERY_SIDE
);
for
(
int
i
=
0
;
i
<
side
.
length
()
/
6
;
i
++)
sList
.
add
(
side
.
substring
(
i
*
6
,
i
*
6
+
6
));
}
catch
(
Exception
e
)
{
}
for
(
int
i
=
0
;
i
<
extra
.
length
()
/
6
;
i
++)
eList
.
add
(
extra
.
substring
(
i
*
6
,
i
*
6
+
6
));
for
(
int
i
=
0
;
i
<
side
.
length
()
/
6
;
i
++)
sList
.
add
(
side
.
substring
(
i
*
6
,
i
*
6
+
6
));
break
;
break
;
default
:
default
:
try
{
main
=
uri
.
getQueryParameter
(
QUERY_MAIN_ALL
);
main
=
uri
.
getQueryParameter
(
QUERY_MAIN_ALL
);
extra
=
uri
.
getQueryParameter
(
QUERY_EXTRA_ALL
);
String
[]
mains
=
main
.
split
(
CARD_DIVIDE_ID
);
side
=
uri
.
getQueryParameter
(
QUERY_SIDE_ALL
);
mList
.
addAll
(
Arrays
.
asList
(
mains
));
}
catch
(
Exception
ignored
)
{
}
try
{
mains
=
main
.
split
(
CARD_DIVIDE_ID
);
extra
=
uri
.
getQueryParameter
(
QUERY_EXTRA_ALL
);
mList
.
addAll
(
Arrays
.
asList
(
mains
));
String
[]
extras
=
extra
.
split
(
CARD_DIVIDE_ID
);
eList
.
addAll
(
Arrays
.
asList
(
extras
));
}
catch
(
Exception
ignored
)
{
}
try
{
extras
=
extra
.
split
(
CARD_DIVIDE_ID
);
side
=
uri
.
getQueryParameter
(
QUERY_SIDE_ALL
);
eList
.
addAll
(
Arrays
.
asList
(
extras
));
String
[]
sides
=
side
.
split
(
CARD_DIVIDE_ID
);
sList
.
addAll
(
Arrays
.
asList
(
sides
));
sides
=
side
.
split
(
CARD_DIVIDE_ID
);
}
catch
(
Exception
ignored
)
{
sList
.
addAll
(
Arrays
.
asList
(
sides
));
}
}
}
for
(
String
m
:
mList
)
{
for
(
String
m
:
mList
)
{
Log
.
e
(
"DeckUU"
,
"Main:"
+
m
);
int
[]
idNum
=
toIdAndNum
(
m
,
version
);
int
[]
idNum
=
toIdAndNum
(
m
,
version
);
if
(
idNum
[
0
]
>
0
)
{
if
(
idNum
[
0
]
>
0
)
{
for
(
int
i
=
0
;
i
<
idNum
[
1
];
i
++)
{
for
(
int
i
=
0
;
i
<
idNum
[
1
];
i
++)
{
...
@@ -206,10 +177,10 @@ public class Deck implements Parcelable {
...
@@ -206,10 +177,10 @@ public class Deck implements Parcelable {
int
[]
idNum
;
int
[]
idNum
;
switch
(
protocol
)
{
switch
(
protocol
)
{
case
YGO_PROTOCOL_0:
case
YGO_
DECK_
PROTOCOL_0:
idNum
=
toIdAndNum0
(
m
);
idNum
=
toIdAndNum0
(
m
);
break
;
break
;
case
YGO_PROTOCOL_1:
case
YGO_
DECK_
PROTOCOL_1:
idNum
=
toIdAndNum1
(
m
);
idNum
=
toIdAndNum1
(
m
);
break
;
break
;
default
:
default
:
...
@@ -222,7 +193,7 @@ public class Deck implements Parcelable {
...
@@ -222,7 +193,7 @@ public class Deck implements Parcelable {
private
int
[]
toIdAndNum1
(
String
m
)
{
private
int
[]
toIdAndNum1
(
String
m
)
{
//元素0为卡密,元素1为卡片数量
//元素0为卡密,元素1为卡片数量
int
[]
idNum
=
{
0
,
1
};
int
[]
idNum
=
{
0
,
1
};
idNum
[
0
]
=
toId
(
m
.
substring
(
0
,
m
.
length
()
-
1
),
YGO
_PROTOCOL_1
);
idNum
[
0
]
=
toId
(
m
.
substring
(
0
,
m
.
length
()
-
1
),
YGO_DECK
_PROTOCOL_1
);
idNum
[
1
]
=
Integer
.
parseInt
(
m
.
substring
(
m
.
length
()
-
1
));
idNum
[
1
]
=
Integer
.
parseInt
(
m
.
substring
(
m
.
length
()
-
1
));
return
idNum
;
return
idNum
;
}
}
...
@@ -236,9 +207,9 @@ public class Deck implements Parcelable {
...
@@ -236,9 +207,9 @@ public class Deck implements Parcelable {
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
}
}
idNum
[
0
]
=
toId
(
m
.
substring
(
0
,
m
.
length
()
-
2
),
YGO
_PROTOCOL_0
);
idNum
[
0
]
=
toId
(
m
.
substring
(
0
,
m
.
length
()
-
2
),
YGO_DECK
_PROTOCOL_0
);
}
else
{
}
else
{
idNum
[
0
]
=
toId
(
m
,
YGO
_PROTOCOL_0
);
idNum
[
0
]
=
toId
(
m
,
YGO_DECK
_PROTOCOL_0
);
}
}
return
idNum
;
return
idNum
;
}
}
...
@@ -385,9 +356,9 @@ public class Deck implements Parcelable {
...
@@ -385,9 +356,9 @@ public class Deck implements Parcelable {
if
(
TextUtils
.
isEmpty
(
str
))
return
0
;
if
(
TextUtils
.
isEmpty
(
str
))
return
0
;
try
{
try
{
switch
(
version
)
{
switch
(
version
)
{
case
YGO_PROTOCOL_0:
case
YGO_
DECK_
PROTOCOL_0:
return
Integer
.
parseInt
(
str
);
return
Integer
.
parseInt
(
str
);
case
YGO_PROTOCOL_1:
case
YGO_
DECK_
PROTOCOL_1:
//如果需要返回40进制码:
//如果需要返回40进制码:
return
unId
(
str
);
return
unId
(
str
);
default
:
default
:
...
...
mobile/src/main/java/cn/garymb/ygomobile/ui/home/HomeActivity.java
View file @
af90136a
...
@@ -195,7 +195,7 @@ public abstract class HomeActivity extends BaseActivity implements NavigationVie
...
@@ -195,7 +195,7 @@ public abstract class HomeActivity extends BaseActivity implements NavigationVie
@Override
@Override
public
void
onJoinRoom
(
String
host
,
int
port
,
String
password
,
int
id
)
{
public
void
onJoinRoom
(
String
host
,
int
port
,
String
password
,
int
id
)
{
if
(
id
==
ID_MAINACTIVITY
)
{
if
(
id
==
ID_MAINACTIVITY
)
{
Q
uickjoinRoom
(
host
,
port
,
password
);
q
uickjoinRoom
(
host
,
port
,
password
);
}
}
}
}
...
@@ -617,16 +617,16 @@ public abstract class HomeActivity extends BaseActivity implements NavigationVie
...
@@ -617,16 +617,16 @@ public abstract class HomeActivity extends BaseActivity implements NavigationVie
});
});
}
}
p
rivate
void
Q
uickjoinRoom
(
String
host
,
int
port
,
String
password
)
{
p
ublic
void
q
uickjoinRoom
(
String
host
,
int
port
,
String
password
)
{
String
message
;
String
message
;
if
(!
TextUtils
.
isEmpty
(
host
))
if
(!
TextUtils
.
isEmpty
(
host
))
message
=
getString
(
R
.
string
.
quick_join
)
message
=
getString
(
R
.
string
.
quick_join
)
+
"IP:"
+
host
+
"
\n
IP:"
+
host
+
"端口:"
+
port
+
"
\n
端口:"
+
port
+
"密码:"
+
password
;
+
"
\n
密码:"
+
password
;
else
else
message
=
getString
(
R
.
string
.
quick_join
)
+
"\""
+
password
+
"\""
;
message
=
getString
(
R
.
string
.
quick_join
)
+
"
:
\""
+
password
+
"\""
;
DialogPlus
dialog
=
new
DialogPlus
(
this
);
DialogPlus
dialog
=
new
DialogPlus
(
this
);
dialog
.
setTitle
(
R
.
string
.
question
);
dialog
.
setTitle
(
R
.
string
.
question
);
...
...
mobile/src/main/java/com/ourygo/assistant/base/listener/OnDeRoomListener.java
0 → 100644
View file @
af90136a
package
com.ourygo.assistant.base.listener
;
/**
* Create By feihua On 2021/9/29
*/
public
interface
OnDeRoomListener
{
void
onDeRoom
(
String
host
,
int
port
,
String
password
,
String
exception
);
}
mobile/src/main/java/com/ourygo/assistant/service/DuelAssistantService.java
View file @
af90136a
...
@@ -248,9 +248,9 @@ public class DuelAssistantService extends Service implements OnDuelAssistantList
...
@@ -248,9 +248,9 @@ public class DuelAssistantService extends Service implements OnDuelAssistantList
String
message
;
String
message
;
if
(!
TextUtils
.
isEmpty
(
host
))
if
(!
TextUtils
.
isEmpty
(
host
))
message
=
getString
(
R
.
string
.
quick_join
)
message
=
getString
(
R
.
string
.
quick_join
)
+
"IP:"
+
host
+
"
\n
IP:"
+
host
+
"端口:"
+
port
+
"
\n
端口:"
+
port
+
"密码:"
+
password
;
+
"
\n
密码:"
+
password
;
else
else
message
=
getString
(
R
.
string
.
quick_join
)
+
"\""
+
password
+
"\""
;
message
=
getString
(
R
.
string
.
quick_join
)
+
"\""
+
password
+
"\""
;
tv_message
.
setText
(
message
);
tv_message
.
setText
(
message
);
...
...
mobile/src/main/java/com/ourygo/assistant/util/DuelAssistantManagement.java
View file @
af90136a
...
@@ -2,14 +2,13 @@ package com.ourygo.assistant.util;
...
@@ -2,14 +2,13 @@ package com.ourygo.assistant.util;
import
android.content.Context
;
import
android.content.Context
;
import
android.net.Uri
;
import
android.text.TextUtils
;
import
android.text.TextUtils
;
import
com.ourygo.assistant.base.listener.OnClipChangedListener
;
import
com.ourygo.assistant.base.listener.OnClipChangedListener
;
import
com.ourygo.assistant.base.listener.OnDeRoomListener
;
import
com.ourygo.assistant.base.listener.OnDuelAssistantListener
;
import
com.ourygo.assistant.base.listener.OnDuelAssistantListener
;
import
org.json.JSONException
;
import
org.json.JSONObject
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
...
@@ -91,59 +90,33 @@ public class DuelAssistantManagement implements OnClipChangedListener {
...
@@ -91,59 +90,33 @@ public class DuelAssistantManagement implements OnClipChangedListener {
int
s1
=
message
.
indexOf
(
m1
);
int
s1
=
message
.
indexOf
(
m1
);
if
(
s1
==
-
1
)
if
(
s1
==
-
1
)
s1
=
message
.
indexOf
(
m2
);
s1
=
message
.
indexOf
(
m2
);
int
start
=
message
.
lastIndexOf
(
Record
.
DECK_URL_PREFIX
,
s1
);
int
start
=
message
.
lastIndexOf
(
Record
.
DECK_URL_PREFIX
,
s1
);
if
(
start
==-
1
)
if
(
start
==
-
1
)
start
=
message
.
lastIndexOf
(
Record
.
HTTP_URL_PREFIX
,
s1
);
start
=
message
.
lastIndexOf
(
Record
.
HTTP_URL_PREFIX
,
s1
);
if
(
start
==-
1
)
if
(
start
==
-
1
)
start
=
message
.
lastIndexOf
(
Record
.
HTTPS_URL_PREFIX
,
s1
);
start
=
message
.
lastIndexOf
(
Record
.
HTTPS_URL_PREFIX
,
s1
);
onSaveDeck
(
message
.
substring
(
start
+
Record
.
DECK_URL_PREFIX
.
length
()),
true
,
id
);
if
(
start
!=
-
1
)
onSaveDeck
(
message
.
substring
(
start
+
Record
.
DECK_URL_PREFIX
.
length
()),
true
,
id
);
return
true
;
return
true
;
}
}
return
false
;
return
false
;
}
}
public
boolean
roomCheck
(
String
message
,
int
id
)
{
public
boolean
roomCheck
(
String
message
,
int
id
)
{
int
start
=
-
1
;
int
end
=
-
1
;
start
=
message
.
indexOf
(
Record
.
ROOM_PREFIX
);
if
(
start
!=
-
1
)
{
end
=
message
.
indexOf
(
Record
.
ROOM_END
,
start
);
if
(
end
!=
-
1
)
{
message
=
message
.
substring
(
start
,
end
);
JSONObject
jsonObject
=
null
;
try
{
jsonObject
=
new
JSONObject
(
message
);
onJoinRoom
(
jsonObject
.
getString
(
Record
.
ARG_HOST
),
jsonObject
.
getInt
(
Record
.
ARG_PORT
),
jsonObject
.
getString
(
Record
.
ARG_PASSWORD
),
id
);
return
true
;
}
catch
(
JSONException
e
)
{
e
.
printStackTrace
();
}
}
}
String
passwordPrefixKey
=
null
;
for
(
String
s
:
Record
.
PASSWORD_PREFIX
)
{
start
=
message
.
indexOf
(
s
);
passwordPrefixKey
=
s
;
if
(
start
!=
-
1
)
{
break
;
}
}
if
(
start
!=
-
1
)
{
if
(
message
.
contains
(
"?"
+
Record
.
ARG_YGO_TYPE
+
"="
+
Record
.
ARG_ROOM
)
||
message
.
contains
(
"&"
+
Record
.
ARG_YGO_TYPE
+
"="
+
Record
.
ARG_ROOM
)
)
{
//如果密码含有空格,则以空格结尾
String
m1
=
"?"
+
Record
.
ARG_YGO_TYPE
+
"="
+
Record
.
ARG_ROOM
;
end
=
message
.
indexOf
(
" "
,
start
)
;
String
m2
=
"&"
+
Record
.
ARG_YGO_TYPE
+
"="
+
Record
.
ARG_ROOM
;
//如果不含有空格则取片尾所有
int
s1
=
message
.
indexOf
(
m1
);
if
(
end
==
-
1
)
{
if
(
s1
==
-
1
)
end
=
message
.
length
(
);
s1
=
message
.
indexOf
(
m2
);
}
else
{
int
start
=
message
.
lastIndexOf
(
Record
.
ROOM_URL_PREFIX
,
s1
);
//如果只有密码前缀而没有密码内容则不跳转
if
(
start
==
-
1
)
if
(
end
-
start
==
passwordPrefixKey
.
length
())
start
=
message
.
lastIndexOf
(
Record
.
HTTP_URL_PREFIX
,
s1
);
return
false
;
if
(
start
==
-
1
)
}
start
=
message
.
lastIndexOf
(
Record
.
HTTPS_URL_PREFIX
,
s1
);
onJoinRoom
(
null
,
0
,
message
.
substring
(
start
,
end
),
id
);
onJoinRoom
(
message
.
substring
(
start
+
Record
.
DECK_URL_PREFIX
.
length
()
),
id
);
return
true
;
return
true
;
}
}
return
false
;
return
false
;
...
@@ -172,6 +145,14 @@ public class DuelAssistantManagement implements OnClipChangedListener {
...
@@ -172,6 +145,14 @@ public class DuelAssistantManagement implements OnClipChangedListener {
return
false
;
return
false
;
}
}
private
void
onJoinRoom
(
String
roomUrl
,
int
id
)
{
YGODAUtil
.
deRoomListener
(
Uri
.
parse
(
roomUrl
),
(
host
,
port
,
password
,
exception
)
->
{
if
(
TextUtils
.
isEmpty
(
exception
))
{
onJoinRoom
(
host
,
port
,
password
,
id
);
}
});
}
private
void
onJoinRoom
(
String
host
,
int
port
,
String
password
,
int
id
)
{
private
void
onJoinRoom
(
String
host
,
int
port
,
String
password
,
int
id
)
{
int
i
=
0
;
int
i
=
0
;
while
(
i
<
onDuelAssistantListenerList
.
size
())
{
while
(
i
<
onDuelAssistantListenerList
.
size
())
{
...
...
mobile/src/main/java/com/ourygo/assistant/util/Record.java
View file @
af90136a
...
@@ -6,6 +6,9 @@ public class Record {
...
@@ -6,6 +6,9 @@ public class Record {
//卡查关键字
//卡查关键字
public
static
final
String
[]
CARD_SEARCH_KEY
=
new
String
[]{
"?"
,
"?"
};
public
static
final
String
[]
CARD_SEARCH_KEY
=
new
String
[]{
"?"
,
"?"
};
public
static
final
int
YGO_ROOM_PROTOCOL_1
=
1
;
//加房关键字
//加房关键字
public
static
final
String
[]
PASSWORD_PREFIX
=
{
public
static
final
String
[]
PASSWORD_PREFIX
=
{
"M,"
,
"m,"
,
"M,"
,
"m,"
,
...
@@ -32,12 +35,18 @@ public class Record {
...
@@ -32,12 +35,18 @@ public class Record {
//卡组url前缀
//卡组url前缀
public
static
final
String
DECK_URL_PREFIX
=
"ygo://deck"
;
public
static
final
String
DECK_URL_PREFIX
=
"ygo://deck"
;
public
static
final
String
ROOM_URL_PREFIX
=
"room://deck"
;
public
static
final
String
HTTP_URL_PREFIX
=
"http://"
;
public
static
final
String
HTTP_URL_PREFIX
=
"http://"
;
public
static
final
String
HTTPS_URL_PREFIX
=
"https://"
;
public
static
final
String
HTTPS_URL_PREFIX
=
"https://"
;
public
static
final
String
ARG_PORT
=
"port"
;
public
static
final
String
ARG_PORT
=
"po"
;
public
static
final
String
ARG_HOST
=
"host"
;
public
static
final
String
ARG_HOST
=
"h"
;
public
static
final
String
ARG_PASSWORD
=
"password"
;
public
static
final
String
ARG_PASSWORD
=
"pw"
;
public
static
final
String
ARG_PORT_ALL
=
"port"
;
public
static
final
String
ARG_HOST_ALL
=
"host"
;
public
static
final
String
ARG_PASSWORD_ALL
=
"password"
;
public
static
final
String
ARG_YGO_TYPE
=
"ygotype"
;
public
static
final
String
ARG_YGO_TYPE
=
"ygotype"
;
public
static
final
String
ARG_DECK
=
"deck"
;
public
static
final
String
ARG_DECK
=
"deck"
;
public
static
final
String
ARG_ROOM
=
"deck"
;
}
}
mobile/src/main/java/com/ourygo/assistant/util/UrlUtil.java
0 → 100644
View file @
af90136a
package
com.ourygo.assistant.util
;
import
java.io.UnsupportedEncodingException
;
import
java.net.URLDecoder
;
import
java.net.URLEncoder
;
/**
* Create By feihua On 2021/9/29
*/
public
class
UrlUtil
{
/**
* URLEncoder编码
*/
public
static
String
enURL
(
String
paramString
)
{
if
(
paramString
==
null
||
paramString
.
equals
(
""
))
{
return
""
;
}
try
{
String
str
=
new
String
(
paramString
.
getBytes
(),
"UTF-8"
);
str
=
URLEncoder
.
encode
(
str
,
"UTF-8"
);
return
str
;
}
catch
(
Exception
localException
)
{
}
return
""
;
}
/**
* URLDecoder解码
*/
public
static
String
deURL
(
String
paramString
)
{
if
(
paramString
==
null
||
paramString
.
equals
(
""
))
{
return
""
;
}
try
{
String
url
=
new
String
(
paramString
.
getBytes
(),
"UTF-8"
);
url
=
URLDecoder
.
decode
(
url
,
"UTF-8"
);
return
url
;
}
catch
(
UnsupportedEncodingException
e
)
{
e
.
printStackTrace
();
}
return
""
;
}
}
mobile/src/main/java/com/ourygo/assistant/util/YGODAUtil.java
0 → 100644
View file @
af90136a
package
com.ourygo.assistant.util
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
QUERY_VERSION
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
QUERY_YGO_TYPE
;
import
android.net.Uri
;
import
com.ourygo.assistant.base.listener.OnDeRoomListener
;
/**
* Create By feihua On 2021/9/29
*/
public
class
YGODAUtil
{
public
static
void
deRoomListener
(
Uri
uri
,
OnDeRoomListener
onDeRoomListener
){
String
host
=
""
,
password
=
""
;
int
port
=
0
;
int
version
=
Record
.
YGO_ROOM_PROTOCOL_1
;
try
{
String
ygoType
=
uri
.
getQueryParameter
(
QUERY_YGO_TYPE
);
if
(
ygoType
.
equals
(
Record
.
ARG_ROOM
))
{
version
=
Integer
.
parseInt
(
uri
.
getQueryParameter
(
QUERY_VERSION
));
}
}
catch
(
Exception
exception
)
{
onDeRoomListener
.
onDeRoom
(
null
,-
1
,
null
,
"非加房协议"
);
}
switch
(
version
)
{
case
Record
.
YGO_ROOM_PROTOCOL_1
:
try
{
host
=
UrlUtil
.
deURL
(
uri
.
getQueryParameter
(
Record
.
ARG_HOST
));
}
catch
(
Exception
ignored
)
{
}
try
{
port
=
Integer
.
parseInt
(
UrlUtil
.
deURL
(
uri
.
getQueryParameter
(
Record
.
ARG_PORT
)));
}
catch
(
Exception
ignored
)
{
}
try
{
password
=
UrlUtil
.
deURL
(
uri
.
getQueryParameter
(
Record
.
ARG_PASSWORD
));
}
catch
(
Exception
ignored
)
{
}
break
;
}
onDeRoomListener
.
onDeRoom
(
host
,
port
,
password
,
null
);
}
}
mobile/src/main/res/values-ko/strings.xml
View file @
af90136a
...
@@ -153,7 +153,7 @@
...
@@ -153,7 +153,7 @@
<string
name=
"no_share_app"
>
공유할 앱이 없습니다.
</string>
<string
name=
"no_share_app"
>
공유할 앱이 없습니다.
</string>
<string
name=
"intput_room_name"
>
비밀번호를 입력하세요. (선택 사항)
</string>
<string
name=
"intput_room_name"
>
비밀번호를 입력하세요. (선택 사항)
</string>
<string
name=
"join"
>
입장
</string>
<string
name=
"join"
>
입장
</string>
<string
name=
"quick_join"
>
게임 입장
\"
</string>
<string
name=
"quick_join"
>
게임 입장
</string>
<string
name=
"join_game"
>
게임 입장
</string>
<string
name=
"join_game"
>
게임 입장
</string>
<string
name=
"settings_game_sensor_refresh"
>
인터페이스 새로 고침
</string>
<string
name=
"settings_game_sensor_refresh"
>
인터페이스 새로 고침
</string>
<string
name=
"label_pendulum"
>
펜듈럼 스케일
</string>
<string
name=
"label_pendulum"
>
펜듈럼 스케일
</string>
...
...
mobile/src/main/res/values-zh/strings.xml
View file @
af90136a
...
@@ -159,7 +159,7 @@
...
@@ -159,7 +159,7 @@
<string
name=
"no_share_app"
>
没有找到分享应用
</string>
<string
name=
"no_share_app"
>
没有找到分享应用
</string>
<string
name=
"intput_room_name"
>
输入密码(可不填)
</string>
<string
name=
"intput_room_name"
>
输入密码(可不填)
</string>
<string
name=
"join"
>
加入
</string>
<string
name=
"join"
>
加入
</string>
<string
name=
"quick_join"
>
加入房间
\"
</string>
<string
name=
"quick_join"
>
加入房间
</string>
<string
name=
"join_game"
>
进入游戏
</string>
<string
name=
"join_game"
>
进入游戏
</string>
<string
name=
"settings_game_sensor_refresh"
>
摇一摇刷新界面
</string>
<string
name=
"settings_game_sensor_refresh"
>
摇一摇刷新界面
</string>
<string
name=
"label_pendulum"
>
灵摆刻度
</string>
<string
name=
"label_pendulum"
>
灵摆刻度
</string>
...
...
mobile/src/main/res/values/strings.xml
View file @
af90136a
...
@@ -160,7 +160,7 @@
...
@@ -160,7 +160,7 @@
<string
name=
"no_share_app"
>
no find share app
</string>
<string
name=
"no_share_app"
>
no find share app
</string>
<string
name=
"intput_room_name"
>
Input room name
</string>
<string
name=
"intput_room_name"
>
Input room name
</string>
<string
name=
"join"
>
join
</string>
<string
name=
"join"
>
join
</string>
<string
name=
"quick_join"
>
join game
\"
</string>
<string
name=
"quick_join"
>
join game
</string>
<string
name=
"join_game"
>
Join game
</string>
<string
name=
"join_game"
>
Join game
</string>
<string
name=
"settings_game_sensor_refresh"
>
Sensor Refresh Game
</string>
<string
name=
"settings_game_sensor_refresh"
>
Sensor Refresh Game
</string>
<string
name=
"label_pendulum"
>
Pendulum scale
</string>
<string
name=
"label_pendulum"
>
Pendulum scale
</string>
...
...
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