Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
YGOMobile-Cn-Ko-En
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-Cn-Ko-En
Commits
a12cab99
Commit
a12cab99
authored
Nov 06, 2019
by
feihuaduo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
主界面剪贴板检测
parent
4cf8824c
Changes
33
Hide whitespace changes
Inline
Side-by-side
Showing
33 changed files
with
703 additions
and
316 deletions
+703
-316
mobile/src/main/AndroidManifest.xml
mobile/src/main/AndroidManifest.xml
+4
-4
mobile/src/main/java/cn/garymb/ygomobile/mycard/MyCard.java
mobile/src/main/java/cn/garymb/ygomobile/mycard/MyCard.java
+1
-1
mobile/src/main/java/cn/garymb/ygomobile/mycard/MyCardActivity.java
.../main/java/cn/garymb/ygomobile/mycard/MyCardActivity.java
+3
-3
mobile/src/main/java/cn/garymb/ygomobile/mycard/MyCardWebView.java
...c/main/java/cn/garymb/ygomobile/mycard/MyCardWebView.java
+1
-1
mobile/src/main/java/cn/garymb/ygomobile/mycard/X5WebView.java
...e/src/main/java/cn/garymb/ygomobile/mycard/X5WebView.java
+1
-1
mobile/src/main/java/cn/garymb/ygomobile/mycard/mcchat/adapter/ChatAdapter.java
...n/garymb/ygomobile/mycard/mcchat/adapter/ChatAdapter.java
+9
-8
mobile/src/main/java/cn/garymb/ygomobile/mycard/mcchat/base/ChatListener.java
.../cn/garymb/ygomobile/mycard/mcchat/base/ChatListener.java
+1
-1
mobile/src/main/java/cn/garymb/ygomobile/mycard/mcchat/bean/ChatMessage.java
...a/cn/garymb/ygomobile/mycard/mcchat/bean/ChatMessage.java
+2
-2
mobile/src/main/java/cn/garymb/ygomobile/mycard/mcchat/management/ServiceManagement.java
...ygomobile/mycard/mcchat/management/ServiceManagement.java
+4
-4
mobile/src/main/java/cn/garymb/ygomobile/mycard/mcchat/management/UserManagement.java
...mb/ygomobile/mycard/mcchat/management/UserManagement.java
+1
-1
mobile/src/main/java/cn/garymb/ygomobile/mycard/mcchat/ui/activity/ChatSplashActivity.java
...omobile/mycard/mcchat/ui/activity/ChatSplashActivity.java
+10
-9
mobile/src/main/java/cn/garymb/ygomobile/mycard/mcchat/ui/activity/McChatActivity.java
...b/ygomobile/mycard/mcchat/ui/activity/McChatActivity.java
+10
-9
mobile/src/main/java/cn/garymb/ygomobile/mycard/mcchat/util/ImageUtil.java
...ava/cn/garymb/ygomobile/mycard/mcchat/util/ImageUtil.java
+1
-6
mobile/src/main/java/cn/garymb/ygomobile/mycard/mcchat/util/TaxiConnectionListener.java
.../ygomobile/mycard/mcchat/util/TaxiConnectionListener.java
+3
-3
mobile/src/main/java/cn/garymb/ygomobile/mycard/mcchat/view/YuanImage.java
...ava/cn/garymb/ygomobile/mycard/mcchat/view/YuanImage.java
+1
-1
mobile/src/main/java/cn/garymb/ygomobile/ourygo/base/OnDuelClipBoardListener.java
...garymb/ygomobile/ourygo/base/OnDuelClipBoardListener.java
+11
-0
mobile/src/main/java/cn/garymb/ygomobile/ourygo/service/DuelAssistantService.java
...garymb/ygomobile/ourygo/service/DuelAssistantService.java
+59
-181
mobile/src/main/java/cn/garymb/ygomobile/ourygo/util/DuelAssistantManagement.java
...garymb/ygomobile/ourygo/util/DuelAssistantManagement.java
+262
-0
mobile/src/main/java/cn/garymb/ygomobile/ui/activities/BaseActivity.java
.../java/cn/garymb/ygomobile/ui/activities/BaseActivity.java
+24
-1
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/CardSearchActivityImpl.java
.../cn/garymb/ygomobile/ui/cards/CardSearchActivityImpl.java
+6
-5
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/DeckManagerActivityImpl.java
...cn/garymb/ygomobile/ui/cards/DeckManagerActivityImpl.java
+6
-7
mobile/src/main/java/cn/garymb/ygomobile/ui/home/HomeActivity.java
...c/main/java/cn/garymb/ygomobile/ui/home/HomeActivity.java
+4
-5
mobile/src/main/java/cn/garymb/ygomobile/ui/home/MainActivity.java
...c/main/java/cn/garymb/ygomobile/ui/home/MainActivity.java
+123
-1
mobile/src/main/java/cn/garymb/ygomobile/ui/mycard/mcchat/util/Util.java
.../java/cn/garymb/ygomobile/ui/mycard/mcchat/util/Util.java
+0
-50
mobile/src/main/java/cn/garymb/ygomobile/ui/preference/fragments/SettingFragment.java
...mb/ygomobile/ui/preference/fragments/SettingFragment.java
+3
-5
mobile/src/main/java/cn/garymb/ygomobile/ui/widget/WebViewPlus.java
.../main/java/cn/garymb/ygomobile/ui/widget/WebViewPlus.java
+1
-1
mobile/src/main/java/cn/garymb/ygomobile/utils/DeckUtil.java
mobile/src/main/java/cn/garymb/ygomobile/utils/DeckUtil.java
+31
-0
mobile/src/main/java/cn/garymb/ygomobile/utils/YGODialogUtil.java
...rc/main/java/cn/garymb/ygomobile/utils/YGODialogUtil.java
+1
-1
mobile/src/main/java/cn/garymb/ygomobile/utils/YGOUtil.java
mobile/src/main/java/cn/garymb/ygomobile/utils/YGOUtil.java
+115
-0
mobile/src/main/res/layout/activity_online_mycard.xml
mobile/src/main/res/layout/activity_online_mycard.xml
+2
-2
mobile/src/main/res/layout/item_chat.xml
mobile/src/main/res/layout/item_chat.xml
+1
-1
mobile/src/main/res/layout/item_chat_me.xml
mobile/src/main/res/layout/item_chat_me.xml
+1
-1
mobile/src/main/res/xml/shortcuts.xml
mobile/src/main/res/xml/shortcuts.xml
+1
-1
No files found.
mobile/src/main/AndroidManifest.xml
View file @
a12cab99
...
...
@@ -158,16 +158,16 @@
android:screenOrientation=
"portrait"
android:theme=
"@style/AppTheme"
/>
<activity
android:name=
"cn.garymb.ygomobile.
ui.
mycard.MyCardActivity"
android:name=
"cn.garymb.ygomobile.mycard.MyCardActivity"
android:configChanges=
"orientation|keyboardHidden|navigation|screenSize"
android:launchMode=
"singleTop"
android:theme=
"@style/AppTheme.Mycard"
android:windowSoftInputMode=
"stateAlwaysHidden|adjustResize"
/>
<activity
android:name=
"cn.garymb.ygomobile.
ui.mycard.mcchat.Mcc
hatActivity"
android:name=
"cn.garymb.ygomobile.
mycard.mcchat.ui.activity.McC
hatActivity"
android:label=
"@string/app_name"
android:windowSoftInputMode=
"stateHidden|adjustResize"
/>
<activity
android:name=
"cn.garymb.ygomobile.
ui.mycard.mcchat.
SplashActivity"
/>
<activity
android:name=
"cn.garymb.ygomobile.
mycard.mcchat.ui.activity.Chat
SplashActivity"
/>
<activity
android:name=
"cn.garymb.ygomobile.ui.activities.FileLogActivity"
/>
<activity
android:name=
"cn.garymb.ygomobile.ui.activities.PermissionsActivity"
/>
...
...
@@ -194,7 +194,7 @@
<!-- 为防止Service被系统回收,可以尝试通过提高服务的优先级解决,1000是最高优先级,数字越小,优先级越低 -->
<!--android:priority="1000"-->
<service
android:name=
"cn.garymb.ygomobile.
ui.plus.ServiceDuelAssistant
"
android:name=
"cn.garymb.ygomobile.
ourygo.service.DuelAssistantService
"
android:priority=
"1000"
/>
</application>
...
...
mobile/src/main/java/cn/garymb/ygomobile/
ui/
mycard/MyCard.java
→
mobile/src/main/java/cn/garymb/ygomobile/mycard/MyCard.java
View file @
a12cab99
package
cn.garymb.ygomobile.
ui.
mycard
;
package
cn.garymb.ygomobile.mycard
;
import
android.annotation.SuppressLint
;
import
android.app.Activity
;
...
...
mobile/src/main/java/cn/garymb/ygomobile/
ui/
mycard/MyCardActivity.java
→
mobile/src/main/java/cn/garymb/ygomobile/mycard/MyCardActivity.java
View file @
a12cab99
package
cn.garymb.ygomobile.
ui.
mycard
;
package
cn.garymb.ygomobile.mycard
;
import
android.annotation.SuppressLint
;
import
android.annotation.TargetApi
;
...
...
@@ -38,7 +38,7 @@ import cn.garymb.ygomobile.lite.BuildConfig;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.ui.activities.BaseActivity
;
import
cn.garymb.ygomobile.ui.cards.DeckManagerActivity
;
import
cn.garymb.ygomobile.
ui.mycard.mcchat.
SplashActivity
;
import
cn.garymb.ygomobile.
mycard.mcchat.ui.activity.Chat
SplashActivity
;
public
class
MyCardActivity
extends
BaseActivity
implements
MyCard
.
MyCardListener
,
NavigationView
.
OnNavigationItemSelectedListener
{
...
...
@@ -310,7 +310,7 @@ public class MyCardActivity extends BaseActivity implements MyCard.MyCardListene
mWebViewPlus
.
loadUrl
(
mMyCard
.
getBBSUrl
());
break
;
case
R
.
id
.
action_chat
:
startActivity
(
new
Intent
(
MyCardActivity
.
this
,
SplashActivity
.
class
));
startActivity
(
new
Intent
(
MyCardActivity
.
this
,
Chat
SplashActivity
.
class
));
break
;
default
:
return
false
;
...
...
mobile/src/main/java/cn/garymb/ygomobile/
ui/
mycard/MyCardWebView.java
→
mobile/src/main/java/cn/garymb/ygomobile/mycard/MyCardWebView.java
View file @
a12cab99
package
cn.garymb.ygomobile.
ui.
mycard
;
package
cn.garymb.ygomobile.mycard
;
import
android.content.Context
;
import
android.util.AttributeSet
;
...
...
mobile/src/main/java/cn/garymb/ygomobile/
ui/
mycard/X5WebView.java
→
mobile/src/main/java/cn/garymb/ygomobile/mycard/X5WebView.java
View file @
a12cab99
package
cn.garymb.ygomobile.
ui.
mycard
;
package
cn.garymb.ygomobile.mycard
;
import
android.annotation.SuppressLint
;
import
android.content.Context
;
...
...
mobile/src/main/java/cn/garymb/ygomobile/
ui/
mycard/mcchat/adapter/ChatAdapter.java
→
mobile/src/main/java/cn/garymb/ygomobile/mycard/mcchat/adapter/ChatAdapter.java
View file @
a12cab99
package
cn.garymb.ygomobile.
ui.
mycard.mcchat.adapter
;
package
cn.garymb.ygomobile.mycard.mcchat.adapter
;
import
android.app.Activity
;
import
android.content.Context
;
...
...
@@ -16,10 +16,11 @@ import androidx.recyclerview.widget.RecyclerView;
import
java.util.List
;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.ui.mycard.mcchat.ChatMessage
;
import
cn.garymb.ygomobile.ui.mycard.mcchat.management.UserManagement
;
import
cn.garymb.ygomobile.ui.mycard.mcchat.util.ImageUtil
;
import
cn.garymb.ygomobile.ui.mycard.mcchat.util.Util
;
import
cn.garymb.ygomobile.mycard.mcchat.bean.ChatMessage
;
import
cn.garymb.ygomobile.mycard.mcchat.management.UserManagement
;
import
cn.garymb.ygomobile.mycard.mcchat.util.ImageUtil
;
import
cn.garymb.ygomobile.utils.YGOUtil
;
import
cn.garymb.ygomobile.utils.YGOUtil
;
public
class
ChatAdapter
extends
RecyclerView
.
Adapter
<
ChatAdapter
.
ViewHolder
>
{
...
...
@@ -84,8 +85,8 @@ public class ChatAdapter extends RecyclerView.Adapter<ChatAdapter.ViewHolder> {
@Override
public
boolean
onLongClick
(
View
p1
)
{
Util
.
fz
Message
(
context
,
cm
.
getMessage
());
Util
.
show
(
context
,
"已复制到剪贴板"
);
YGOUtil
.
copy
Message
(
context
,
cm
.
getMessage
());
YGOUtil
.
show
(
"已复制到剪贴板"
);
// TODO: Implement this method
return
true
;
}
...
...
@@ -94,7 +95,7 @@ public class ChatAdapter extends RecyclerView.Adapter<ChatAdapter.ViewHolder> {
@Override
public
void
onClick
(
View
p1
)
{
Util
.
closeKeyboard
((
Activity
)
context
);
YGO
Util
.
closeKeyboard
((
Activity
)
context
);
// TODO: Implement this method
}
});
...
...
mobile/src/main/java/cn/garymb/ygomobile/
ui/mycard/mcchat
/ChatListener.java
→
mobile/src/main/java/cn/garymb/ygomobile/
mycard/mcchat/base
/ChatListener.java
View file @
a12cab99
package
cn.garymb.ygomobile.
ui.mycard.mcchat
;
package
cn.garymb.ygomobile.
mycard.mcchat.base
;
import
org.jivesoftware.smack.packet.Message
;
...
...
mobile/src/main/java/cn/garymb/ygomobile/
ui/mycard/mcchat
/ChatMessage.java
→
mobile/src/main/java/cn/garymb/ygomobile/
mycard/mcchat/bean
/ChatMessage.java
View file @
a12cab99
package
cn.garymb.ygomobile.
ui.mycard.mcchat
;
package
cn.garymb.ygomobile.
mycard.mcchat.bean
;
import
org.jivesoftware.smack.packet.Message
;
import
cn.garymb.ygomobile.
ui.
mycard.mcchat.management.ServiceManagement
;
import
cn.garymb.ygomobile.mycard.mcchat.management.ServiceManagement
;
public
class
ChatMessage
{
...
...
mobile/src/main/java/cn/garymb/ygomobile/
ui/
mycard/mcchat/management/ServiceManagement.java
→
mobile/src/main/java/cn/garymb/ygomobile/mycard/mcchat/management/ServiceManagement.java
View file @
a12cab99
package
cn.garymb.ygomobile.
ui.
mycard.mcchat.management
;
package
cn.garymb.ygomobile.mycard.mcchat.management
;
import
android.annotation.SuppressLint
;
import
android.os.Handler
;
...
...
@@ -22,9 +22,9 @@ import java.io.IOException;
import
java.util.ArrayList
;
import
java.util.List
;
import
cn.garymb.ygomobile.
ui.mycard.mcchat
.ChatListener
;
import
cn.garymb.ygomobile.
ui.mycard.mcchat
.ChatMessage
;
import
cn.garymb.ygomobile.
ui.
mycard.mcchat.util.TaxiConnectionListener
;
import
cn.garymb.ygomobile.
mycard.mcchat.base
.ChatListener
;
import
cn.garymb.ygomobile.
mycard.mcchat.bean
.ChatMessage
;
import
cn.garymb.ygomobile.mycard.mcchat.util.TaxiConnectionListener
;
import
cn.garymb.ygomobile.utils.FileLogUtil
;
public
class
ServiceManagement
{
...
...
mobile/src/main/java/cn/garymb/ygomobile/
ui/
mycard/mcchat/management/UserManagement.java
→
mobile/src/main/java/cn/garymb/ygomobile/mycard/mcchat/management/UserManagement.java
View file @
a12cab99
package
cn.garymb.ygomobile.
ui.
mycard.mcchat.management
;
package
cn.garymb.ygomobile.mycard.mcchat.management
;
public
class
UserManagement
{
private
static
UserManagement
um
=
new
UserManagement
();
...
...
mobile/src/main/java/cn/garymb/ygomobile/
ui/mycard/mcchat/
SplashActivity.java
→
mobile/src/main/java/cn/garymb/ygomobile/
mycard/mcchat/ui/activity/Chat
SplashActivity.java
View file @
a12cab99
package
cn.garymb.ygomobile.
ui.mycard.mcchat
;
package
cn.garymb.ygomobile.
mycard.mcchat.ui.activity
;
import
android.annotation.SuppressLint
;
import
android.app.Activity
;
...
...
@@ -20,12 +20,13 @@ import org.jivesoftware.smack.XMPPException;
import
java.io.IOException
;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.ui.mycard.MyCardActivity
;
import
cn.garymb.ygomobile.ui.mycard.mcchat.management.ServiceManagement
;
import
cn.garymb.ygomobile.ui.mycard.mcchat.management.UserManagement
;
import
cn.garymb.ygomobile.ui.mycard.mcchat.util.Util
;
import
cn.garymb.ygomobile.mycard.MyCardActivity
;
import
cn.garymb.ygomobile.mycard.mcchat.management.ServiceManagement
;
import
cn.garymb.ygomobile.mycard.mcchat.management.UserManagement
;
public
class
SplashActivity
extends
Activity
{
import
cn.garymb.ygomobile.utils.YGOUtil
;
public
class
ChatSplashActivity
extends
Activity
{
ServiceManagement
su
;
ProgressBar
sp_jz
;
...
...
@@ -43,10 +44,10 @@ public class SplashActivity extends Activity {
su
.
setIsConnected
(
false
);
sp_jz
.
setVisibility
(
View
.
GONE
);
sp_tv
.
setText
(
getString
(
R
.
string
.
logining_failed
));
Util
.
show
(
SplashActivity
.
this
,
getString
(
R
.
string
.
failed_reason
)
+
msg
.
obj
);
YGOUtil
.
show
(
YGOUtil
.
s
(
R
.
string
.
failed_reason
)
+
msg
.
obj
);
break
;
case
1
:
startActivity
(
new
Intent
(
SplashActivity
.
this
,
Mcc
hatActivity
.
class
));
startActivity
(
new
Intent
(
ChatSplashActivity
.
this
,
McC
hatActivity
.
class
));
finish
();
break
;
case
2
:
...
...
@@ -65,7 +66,7 @@ public class SplashActivity extends Activity {
case
5
:
/*sp_jz.setVisibility(View.GONE);
sp_tv.setText("用户名或密码为空");*/
startActivity
(
new
Intent
(
SplashActivity
.
this
,
MyCardActivity
.
class
));
startActivity
(
new
Intent
(
Chat
SplashActivity
.
this
,
MyCardActivity
.
class
));
finish
();
break
;
...
...
mobile/src/main/java/cn/garymb/ygomobile/
ui/mycard/mcchat/Mcc
hatActivity.java
→
mobile/src/main/java/cn/garymb/ygomobile/
mycard/mcchat/ui/activity/McC
hatActivity.java
View file @
a12cab99
package
cn.garymb.ygomobile.
ui.mycard.mcchat
;
package
cn.garymb.ygomobile.
mycard.mcchat.ui.activity
;
import
android.app.Activity
;
import
android.os.Bundle
;
...
...
@@ -15,12 +15,13 @@ import androidx.recyclerview.widget.RecyclerView;
import
org.jivesoftware.smack.packet.Message
;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.ui.mycard.mcchat.adapter.ChatAdapter
;
import
cn.garymb.ygomobile.ui.mycard.mcchat.management.ServiceManagement
;
import
cn.garymb.ygomobile.ui.mycard.mcchat.management.UserManagement
;
import
cn.garymb.ygomobile.ui.mycard.mcchat.util.Util
;
import
cn.garymb.ygomobile.mycard.mcchat.base.ChatListener
;
import
cn.garymb.ygomobile.mycard.mcchat.adapter.ChatAdapter
;
import
cn.garymb.ygomobile.mycard.mcchat.management.ServiceManagement
;
import
cn.garymb.ygomobile.mycard.mcchat.management.UserManagement
;
import
cn.garymb.ygomobile.utils.YGOUtil
;
public
class
Mc
c
hatActivity
extends
Activity
implements
ChatListener
{
public
class
Mc
C
hatActivity
extends
Activity
implements
ChatListener
{
private
EditText
main_send_message
;
private
ImageButton
main_send
;
...
...
@@ -85,7 +86,7 @@ public class McchatActivity extends Activity implements ChatListener {
su
=
ServiceManagement
.
getDx
();
cadp
=
new
ChatAdapter
(
this
,
su
.
getData
());
su
.
addListener
(
this
);
LinearLayoutManager
linearLayoutManager
=
new
LinearLayoutManager
(
Mc
c
hatActivity
.
this
,
LinearLayoutManager
.
VERTICAL
,
false
);
LinearLayoutManager
linearLayoutManager
=
new
LinearLayoutManager
(
Mc
C
hatActivity
.
this
,
LinearLayoutManager
.
VERTICAL
,
false
);
linearLayoutManager
.
setStackFromEnd
(
true
);
//关键 设置此项,当软键盘弹出时,布局会自动顶上去,在结合AndroidManifest.xml设置属性
main_rec
.
setLayoutManager
(
linearLayoutManager
);
main_rec
.
setAdapter
(
cadp
);
...
...
@@ -101,13 +102,13 @@ public class McchatActivity extends Activity implements ChatListener {
public
void
onClick
(
View
p1
)
{
String
message
=
main_send_message
.
getText
().
toString
().
trim
();
if
(
message
.
equals
(
""
))
{
Util
.
show
(
McchatActivity
.
this
,
getString
(
R
.
string
.
noting_to_send
));
YGOUtil
.
show
(
getString
(
R
.
string
.
noting_to_send
));
}
else
{
try
{
su
.
sendMessage
(
message
);
main_send_message
.
setText
(
""
);
}
catch
(
Exception
e
)
{
Util
.
show
(
McchatActivity
.
this
,
getString
(
R
.
string
.
sending_failed
));
YGOUtil
.
show
(
getString
(
R
.
string
.
sending_failed
));
}
}
// TODO: Implement this method
...
...
mobile/src/main/java/cn/garymb/ygomobile/
ui/
mycard/mcchat/util/ImageUtil.java
→
mobile/src/main/java/cn/garymb/ygomobile/mycard/mcchat/util/ImageUtil.java
View file @
a12cab99
package
cn.garymb.ygomobile.
ui.
mycard.mcchat.util
;
package
cn.garymb.ygomobile.mycard.mcchat.util
;
import
android.content.Context
;
import
android.graphics.ColorFilter
;
import
android.graphics.ColorMatrix
;
import
android.graphics.ColorMatrixColorFilter
;
import
android.net.Uri
;
import
android.util.Log
;
import
android.widget.ImageView
;
import
com.bumptech.glide.Glide
;
import
com.bumptech.glide.load.engine.DiskCacheStrategy
;
import
java.util.HashMap
;
import
java.util.Map
;
import
cn.garymb.ygomobile.lite.R
;
public
class
ImageUtil
{
...
...
mobile/src/main/java/cn/garymb/ygomobile/
ui/
mycard/mcchat/util/TaxiConnectionListener.java
→
mobile/src/main/java/cn/garymb/ygomobile/mycard/mcchat/util/TaxiConnectionListener.java
View file @
a12cab99
package
cn.garymb.ygomobile.
ui.
mycard.mcchat.util
;
package
cn.garymb.ygomobile.mycard.mcchat.util
;
/**
* 连接监听类
...
...
@@ -12,8 +12,8 @@ import org.jivesoftware.smack.XMPPConnection;
import
java.util.Timer
;
import
java.util.TimerTask
;
import
cn.garymb.ygomobile.
ui.
mycard.mcchat.management.ServiceManagement
;
import
cn.garymb.ygomobile.
ui.
mycard.mcchat.management.UserManagement
;
import
cn.garymb.ygomobile.mycard.mcchat.management.ServiceManagement
;
import
cn.garymb.ygomobile.mycard.mcchat.management.UserManagement
;
public
class
TaxiConnectionListener
implements
ConnectionListener
{
...
...
mobile/src/main/java/cn/garymb/ygomobile/
ui/
mycard/mcchat/view/YuanImage.java
→
mobile/src/main/java/cn/garymb/ygomobile/mycard/mcchat/view/YuanImage.java
View file @
a12cab99
package
cn.garymb.ygomobile.
ui.
mycard.mcchat.view
;
package
cn.garymb.ygomobile.mycard.mcchat.view
;
import
android.content.Context
;
import
android.graphics.Bitmap
;
...
...
mobile/src/main/java/cn/garymb/ygomobile/ourygo/base/OnDuelClipBoardListener.java
0 → 100644
View file @
a12cab99
package
cn.garymb.ygomobile.ourygo.base
;
public
interface
OnDuelClipBoardListener
{
void
onDeckCode
(
String
deckCode
,
boolean
isDebounce
);
void
onDeckUrl
(
String
deckUrl
,
boolean
isDebounce
);
void
onCardQuery
(
String
cardSearchMessage
,
boolean
isDebounce
);
void
onDuelPassword
(
String
password
,
boolean
isDebounce
);
boolean
isEffective
();
}
mobile/src/main/java/cn/garymb/ygomobile/
ui/plus/ServiceDuelAssistant
.java
→
mobile/src/main/java/cn/garymb/ygomobile/
ourygo/service/DuelAssistantService
.java
View file @
a12cab99
package
cn.garymb.ygomobile.
ui.plus
;
package
cn.garymb.ygomobile.
ourygo.service
;
import
android.annotation.SuppressLint
;
import
android.app.Notification
;
...
...
@@ -6,8 +6,6 @@ import android.app.NotificationChannel;
import
android.app.NotificationManager
;
import
android.app.PendingIntent
;
import
android.app.Service
;
import
android.content.ClipData
;
import
android.content.ClipboardManager
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.graphics.PixelFormat
;
...
...
@@ -38,55 +36,33 @@ import cn.garymb.ygomobile.bean.Deck;
import
cn.garymb.ygomobile.bean.ServerInfo
;
import
cn.garymb.ygomobile.bean.ServerList
;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.ourygo.base.OnDuelClipBoardListener
;
import
cn.garymb.ygomobile.ourygo.util.DuelAssistantManagement
;
import
cn.garymb.ygomobile.ui.adapters.ServerListAdapter
;
import
cn.garymb.ygomobile.ui.cards.CardSearchAcitivity
;
import
cn.garymb.ygomobile.ui.cards.DeckManagerActivity
;
import
cn.garymb.ygomobile.ui.cards.deck.DeckUtils
;
import
cn.garymb.ygomobile.ui.home.MainActivity
;
import
cn.garymb.ygomobile.ui.home.ServerListManager
;
import
cn.garymb.ygomobile.ui.plus.VUiKit
;
import
cn.garymb.ygomobile.utils.DeckUtil
;
import
cn.garymb.ygomobile.utils.PermissionUtil
;
import
cn.garymb.ygomobile.utils.YGOUtil
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
ASSET_SERVER_LIST
;
public
class
ServiceDuelAssistant
extends
Service
{
public
class
DuelAssistantService
extends
Service
implements
OnDuelClipBoardListener
{
private
final
static
String
TAG
=
"
ServiceDuelAssistant
"
;
private
final
static
String
TAG
=
"
DuelAssistantService
"
;
private
static
final
String
CHANNEL_ID
=
"YGOMobile"
;
private
static
final
String
CHANNEL_NAME
=
"Duel_Assistant"
;
private
final
static
String
DUEL_ASSISTANT_SERVICE_ACTION
=
"YGOMOBILE:ACTION_DUEL_ASSISTANT_SERVICE"
;
private
final
static
String
CMD_NAME
=
"CMD"
;
private
final
static
String
CMD_START_GAME
=
"CMD : START GAME"
;
private
final
static
String
CMD_STOP_SERVICE
=
"CMD : STOP SERVICE"
;
private
final
static
String
DECK_URL_PREFIX
=
Constants
.
SCHEME_APP
+
"://"
+
Constants
.
URI_HOST
;
//悬浮窗显示的时间
private
static
final
int
TIME_DIS_WINDOW
=
3000
;
//卡查关键字
public
static
final
String
[]
cardSearchKey
=
new
String
[]{
"?"
,
"?"
};
//加房关键字
public
static
final
String
[]
passwordPrefix
=
{
"M,"
,
"m,"
,
"T,"
,
"PR,"
,
"pr,"
,
"AI,"
,
"ai,"
,
"LF2,"
,
"lf2,"
,
"M#"
,
"m#"
,
"T#"
,
"t#"
,
"PR#"
,
"pr#"
,
"NS#"
,
"ns#"
,
"S#"
,
"s#"
,
"AI#"
,
"ai#"
,
"LF2#"
,
"lf2#"
,
"R#"
,
"r#"
};
//卡查内容
public
static
String
cardSearchMessage
=
""
;
//卡组复制
public
static
final
String
[]
DeckTextKey
=
new
String
[]{
"#main"
};
public
static
String
DeckText
=
""
;
//悬浮窗布局View
private
View
mFloatLayout
;
private
TextView
tv_message
;
...
...
@@ -97,7 +73,7 @@ public class ServiceDuelAssistant extends Service {
private
WindowManager
.
LayoutParams
wmParams
;
private
WindowManager
mWindowManager
;
private
ClipboardManager
cm
;
private
DuelAssistantManagement
duelAssistantManagement
;
@Override
public
IBinder
onBind
(
Intent
p1
)
{
...
...
@@ -109,116 +85,26 @@ public class ServiceDuelAssistant extends Service {
public
void
onCreate
()
{
// TODO: Implement this method
super
.
onCreate
();
Log
.
e
(
"DuelAssistantService"
,
"开启服务"
);
duelAssistantManagement
=
DuelAssistantManagement
.
getInstance
();
//开启服务
startForeground
();
//初始化加房布局
createFloatView
();
//开启剪贴板监听
startClipboardListener
();
duelAssistantManagement
.
addListener
(
this
);
}
@Override
public
void
onDestroy
()
{
super
.
onDestroy
();
//移除剪贴板监听
cm
.
removePrimaryClipChangedListener
(
onPrimaryClipChangedListener
);
duelAssistantManagement
.
removeListener
(
this
);
//关闭悬浮窗时的声明
stopForeground
(
true
);
duelAssistantManagement
.
setStart
(
false
);
}
private
void
startClipboardListener
()
{
cm
=
(
ClipboardManager
)
getSystemService
(
Context
.
CLIPBOARD_SERVICE
);
if
(
cm
==
null
)
return
;
cm
.
addPrimaryClipChangedListener
(
onPrimaryClipChangedListener
);
}
ClipboardManager
.
OnPrimaryClipChangedListener
onPrimaryClipChangedListener
=
new
ClipboardManager
.
OnPrimaryClipChangedListener
()
{
@Override
public
void
onPrimaryClipChanged
()
{
ClipData
clipData
=
cm
.
getPrimaryClip
();
if
(
clipData
==
null
)
return
;
CharSequence
cs
=
clipData
.
getItemAt
(
0
).
getText
();
final
String
clipMessage
;
if
(
cs
!=
null
)
{
clipMessage
=
cs
.
toString
();
}
else
{
clipMessage
=
null
;
}
//如果复制的内容为空则不执行下面的代码
if
(
TextUtils
.
isEmpty
(
clipMessage
))
{
return
;
}
//如果复制的内容是多行作为卡组去判断
if
(
clipMessage
.
contains
(
"\n"
))
{
for
(
String
s
:
DeckTextKey
)
{
//只要包含其中一个关键字就视为卡组
if
(
clipMessage
.
contains
(
s
))
{
saveDeck
(
clipMessage
,
false
);
return
;
}
}
return
;
}
//如果是卡组url
int
deckStart
=
clipMessage
.
indexOf
(
DECK_URL_PREFIX
);
if
(
deckStart
!=
-
1
)
{
saveDeck
(
clipMessage
.
substring
(
deckStart
+
DECK_URL_PREFIX
.
length
(),
clipMessage
.
length
()),
true
);
return
;
}
int
start
=
-
1
;
int
end
=
-
1
;
String
passwordPrefixKey
=
null
;
for
(
String
s
:
passwordPrefix
)
{
start
=
clipMessage
.
indexOf
(
s
);
passwordPrefixKey
=
s
;
if
(
start
!=
-
1
)
{
break
;
}
}
if
(
start
!=
-
1
)
{
//如果密码含有空格,则以空格结尾
end
=
clipMessage
.
indexOf
(
" "
,
start
);
//如果不含有空格则取片尾所有
if
(
end
==
-
1
)
{
end
=
clipMessage
.
length
();
}
else
{
//如果只有密码前缀而没有密码内容则不跳转
if
(
end
-
start
==
passwordPrefixKey
.
length
())
return
;
}
//如果有悬浮窗权限再显示
if
(
PermissionUtil
.
isServicePermission
(
ServiceDuelAssistant
.
this
,
false
))
joinRoom
(
clipMessage
,
start
,
end
);
}
else
{
for
(
String
s
:
cardSearchKey
)
{
int
cardSearchStart
=
clipMessage
.
indexOf
(
s
);
if
(
cardSearchStart
!=
-
1
)
{
//卡查内容
cardSearchMessage
=
clipMessage
.
substring
(
cardSearchStart
+
s
.
length
(),
clipMessage
.
length
());
//如果复制的文本里带?号后面没有内容则不跳转
if
(
TextUtils
.
isEmpty
(
cardSearchMessage
))
{
return
;
}
//如果卡查内容包含“=”并且复制的内容包含“.”不卡查
if
(
cardSearchMessage
.
contains
(
"="
)
&&
clipMessage
.
contains
(
"."
))
{
return
;
}
Intent
intent
=
new
Intent
(
ServiceDuelAssistant
.
this
,
CardSearchAcitivity
.
class
);
intent
.
addFlags
(
Intent
.
FLAG_ACTIVITY_NEW_TASK
);
intent
.
putExtra
(
CardSearchAcitivity
.
SEARCH_MESSAGE
,
cardSearchMessage
);
startActivity
(
intent
);
}
}
}
}
};
private
void
startForeground
()
{
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
O
)
{
...
...
@@ -240,8 +126,8 @@ public class ServiceDuelAssistant extends Service {
NotificationManager
manager
=
(
NotificationManager
)
getSystemService
(
Context
.
NOTIFICATION_SERVICE
);
NotificationChannel
channel
=
manager
.
getNotificationChannel
(
CHANNEL_ID
);
if
(
channel
!=
null
)
{
if
(
channel
.
getLockscreenVisibility
()
!=
Notification
.
VISIBILITY_SECRET
)
{
if
(
channel
!=
null
)
{
if
(
channel
.
getLockscreenVisibility
()
!=
Notification
.
VISIBILITY_SECRET
)
{
manager
.
deleteNotificationChannel
(
CHANNEL_ID
);
channel
=
null
;
}
...
...
@@ -265,12 +151,11 @@ public class ServiceDuelAssistant extends Service {
}
else
{
//如果没有通知权限则关闭服务
stopForeground
(
true
);
stopService
(
new
Intent
(
ServiceDuelAssistant
.
this
,
ServiceDuelAssistant
.
class
));
stopService
(
new
Intent
(
DuelAssistantService
.
this
,
DuelAssistantService
.
class
));
}
}
}
@Override
public
int
onStartCommand
(
Intent
intent
,
int
flags
,
int
startId
)
{
if
(
intent
==
null
)
...
...
@@ -290,7 +175,7 @@ public class ServiceDuelAssistant extends Service {
break
;
case
CMD_START_GAME:
Intent
intent2
=
new
Intent
(
ServiceDuelAssistant
.
this
,
MainActivity
.
class
);
Intent
intent2
=
new
Intent
(
DuelAssistantService
.
this
,
MainActivity
.
class
);
intent2
.
addFlags
(
Intent
.
FLAG_ACTIVITY_NEW_TASK
);
startActivity
(
intent2
);
break
;
...
...
@@ -307,7 +192,6 @@ public class ServiceDuelAssistant extends Service {
return
START_STICKY
;
//super.onStartCommand(intent, flags, startId);
}
private
void
collapseStatusBar
()
{
try
{
@SuppressLint
(
"WrongConstant"
)
Object
statusBarManager
=
getSystemService
(
"statusbar"
);
...
...
@@ -357,35 +241,14 @@ public class ServiceDuelAssistant extends Service {
public
void
onClick
(
View
v
)
{
disJoinDialog
();
//如果是卡组url
if
(
isUrl
)
{
Deck
deckInfo
=
new
Deck
(
getString
(
R
.
string
.
rename_deck
)
+
System
.
currentTimeMillis
(),
Uri
.
parse
(
deckMessage
));
File
file
=
deckInfo
.
saveTemp
(
AppsSettings
.
get
().
getDeckDir
());
Intent
startdeck
=
new
Intent
(
ServiceDuelAssistant
.
this
,
DeckManagerActivity
.
getDeckManager
());
startdeck
.
putExtra
(
Intent
.
EXTRA_TEXT
,
file
.
getAbsolutePath
());
startdeck
.
addFlags
(
Intent
.
FLAG_ACTIVITY_NEW_TASK
);
startActivity
(
startdeck
);
}
else
{
//如果是卡组文本
try
{
//以当前时间戳作为卡组名保存卡组
File
file
=
DeckUtils
.
save
(
getString
(
R
.
string
.
rename_deck
)
+
System
.
currentTimeMillis
(),
deckMessage
);
Intent
startdeck
=
new
Intent
(
ServiceDuelAssistant
.
this
,
DeckManagerActivity
.
getDeckManager
());
startdeck
.
putExtra
(
Intent
.
EXTRA_TEXT
,
file
.
getAbsolutePath
());
startdeck
.
addFlags
(
Intent
.
FLAG_ACTIVITY_NEW_TASK
);
startActivity
(
startdeck
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
Toast
.
makeText
(
ServiceDuelAssistant
.
this
,
getString
(
R
.
string
.
save_failed_bcos
)
+
e
,
Toast
.
LENGTH_SHORT
).
show
();
}
}
DeckUtil
.
saveDeck
(
DuelAssistantService
.
this
,
deckMessage
,
isUrl
);
}
});
}
private
void
joinRoom
(
String
ss
,
int
start
,
int
end
)
{
final
String
password
=
ss
.
substring
(
start
,
ss
.
length
());
tv_message
.
setText
(
getString
(
R
.
string
.
quick_join
)
+
password
+
"\""
);
private
void
joinRoom
(
String
password
)
{
tv_message
.
setText
(
YGOUtil
.
s
(
R
.
string
.
quick_join
)
+
password
+
"\""
);
bt_join
.
setText
(
R
.
string
.
join
);
bt_close
.
setText
(
R
.
string
.
search_close
);
disJoinDialog
();
...
...
@@ -412,14 +275,14 @@ public class ServiceDuelAssistant extends Service {
isdis
=
false
;
mWindowManager
.
removeView
(
mFloatLayout
);
}
ServerListAdapter
mServerListAdapter
=
new
ServerListAdapter
(
ServiceDuelAssistant
.
this
);
ServerListAdapter
mServerListAdapter
=
new
ServerListAdapter
(
DuelAssistantService
.
this
);
ServerListManager
mServerListManager
=
new
ServerListManager
(
ServiceDuelAssistant
.
this
,
mServerListAdapter
);
ServerListManager
mServerListManager
=
new
ServerListManager
(
DuelAssistantService
.
this
,
mServerListAdapter
);
mServerListManager
.
syncLoadData
();
File
xmlFile
=
new
File
(
getFilesDir
(),
Constants
.
SERVER_FILE
);
VUiKit
.
defer
().
when
(()
->
{
ServerList
assetList
=
ServerListManager
.
readList
(
ServiceDuelAssistant
.
this
.
getAssets
().
open
(
ASSET_SERVER_LIST
));
ServerList
assetList
=
ServerListManager
.
readList
(
DuelAssistantService
.
this
.
getAssets
().
open
(
ASSET_SERVER_LIST
));
ServerList
fileList
=
xmlFile
.
exists
()
?
ServerListManager
.
readList
(
new
FileInputStream
(
xmlFile
))
:
null
;
if
(
fileList
==
null
)
{
return
assetList
;
...
...
@@ -431,31 +294,15 @@ public class ServiceDuelAssistant extends Service {
return
fileList
;
}).
done
((
list
)
->
{
if
(
list
!=
null
)
{
ServerInfo
serverInfo
=
list
.
getServerInfoList
().
get
(
0
);
duelIntent
(
ServiceDuelAssistant
.
this
,
serverInfo
.
getServerAddr
(),
serverInfo
.
getPort
(),
serverInfo
.
getPlayerName
(),
password
);
YGOUtil
.
duelIntent
(
DuelAssistantService
.
this
,
serverInfo
.
getServerAddr
(),
serverInfo
.
getPort
(),
serverInfo
.
getPlayerName
(),
password
);
}
});
}
});
}
//决斗跳转
public
static
void
duelIntent
(
Context
context
,
String
ip
,
int
dk
,
String
name
,
String
password
)
{
Intent
intent1
=
new
Intent
(
"ygomobile.intent.action.GAME"
);
intent1
.
putExtra
(
"host"
,
ip
);
intent1
.
putExtra
(
"port"
,
dk
);
intent1
.
putExtra
(
"user"
,
name
);
intent1
.
putExtra
(
"room"
,
password
);
//intent1.setPackage("cn.garymb.ygomobile");
intent1
.
addFlags
(
Intent
.
FLAG_ACTIVITY_NEW_TASK
);
context
.
startActivity
(
intent1
);
}
private
void
disJoinDialog
()
{
if
(
isdis
)
{
isdis
=
false
;
...
...
@@ -506,4 +353,35 @@ public class ServiceDuelAssistant extends Service {
bt_close
=
mFloatLayout
.
findViewById
(
R
.
id
.
bt_close
);
}
@Override
public
void
onDeckCode
(
String
deckCode
,
boolean
isDebounce
)
{
saveDeck
(
deckCode
,
false
);
}
@Override
public
void
onDeckUrl
(
String
deckUrl
,
boolean
isDebounce
)
{
saveDeck
(
deckUrl
,
true
);
}
@Override
public
void
onCardQuery
(
String
cardSearchMessage
,
boolean
isDebounce
)
{
Log
.
e
(
"DuelAssistantService"
,
"卡查监听"
+
cardSearchMessage
);
Intent
intent
=
new
Intent
(
DuelAssistantService
.
this
,
CardSearchAcitivity
.
class
);
intent
.
addFlags
(
Intent
.
FLAG_ACTIVITY_NEW_TASK
);
intent
.
putExtra
(
CardSearchAcitivity
.
SEARCH_MESSAGE
,
cardSearchMessage
);
startActivity
(
intent
);
}
@Override
public
void
onDuelPassword
(
String
password
,
boolean
isDebounce
)
{
//如果有悬浮窗权限再显示
if
(
PermissionUtil
.
isServicePermission
(
DuelAssistantService
.
this
,
false
))
joinRoom
(
password
);
}
@Override
public
boolean
isEffective
()
{
Log
.
e
(
"DuelAssistantService"
,
"有效性"
+
YGOUtil
.
isContextExisted
(
this
));
return
YGOUtil
.
isContextExisted
(
this
);
}
}
mobile/src/main/java/cn/garymb/ygomobile/ourygo/util/DuelAssistantManagement.java
0 → 100644
View file @
a12cab99
package
cn.garymb.ygomobile.ourygo.util
;
import
android.content.ClipData
;
import
android.content.ClipboardManager
;
import
android.content.Context
;
import
android.text.TextUtils
;
import
android.util.Log
;
import
java.util.ArrayList
;
import
java.util.List
;
import
cn.garymb.ygomobile.App
;
import
cn.garymb.ygomobile.Constants
;
import
cn.garymb.ygomobile.ourygo.base.OnDuelClipBoardListener
;
public
class
DuelAssistantManagement
{
private
static
final
DuelAssistantManagement
ourInstance
=
new
DuelAssistantManagement
();
private
String
lastMessage
;
private
String
cardSearchMessage
;
public
static
DuelAssistantManagement
getInstance
()
{
return
ourInstance
;
}
//是否启动助手
private
boolean
isStart
;
private
boolean
isListener
;
private
ClipboardManager
clipboardManager
;
//其他单独监听是否能触发
private
boolean
isOtherListener
;
private
List
<
OnDuelClipBoardListener
>
onDuelClipBoardListenerList
;
//卡查关键字
public
static
final
String
[]
cardSearchKey
=
new
String
[]{
"?"
,
"?"
};
//卡组url前缀
private
final
static
String
DECK_URL_PREFIX
=
Constants
.
SCHEME_APP
+
"://"
+
Constants
.
URI_HOST
;
//卡组复制
public
static
final
String
[]
DeckTextKey
=
new
String
[]{
"#main"
};
//加房关键字
public
static
final
String
[]
passwordPrefix
=
{
"M,"
,
"m,"
,
"T,"
,
"PR,"
,
"pr,"
,
"AI,"
,
"ai,"
,
"LF2,"
,
"lf2,"
,
"M#"
,
"m#"
,
"T#"
,
"t#"
,
"PR#"
,
"pr#"
,
"NS#"
,
"ns#"
,
"S#"
,
"s#"
,
"AI#"
,
"ai#"
,
"LF2#"
,
"lf2#"
,
"R#"
,
"r#"
};
private
DuelAssistantManagement
()
{
isStart
=
false
;
isOtherListener
=
true
;
isListener
=
true
;
onDuelClipBoardListenerList
=
new
ArrayList
<>();
clipboardManager
=
(
ClipboardManager
)
App
.
get
().
getSystemService
(
Context
.
CLIPBOARD_SERVICE
);
if
(
clipboardManager
!=
null
)
clipboardManager
.
addPrimaryClipChangedListener
(
onPrimaryClipChangedListener
);
}
public
boolean
isStart
()
{
return
isStart
;
}
public
void
setStart
(
boolean
start
)
{
isStart
=
start
;
}
public
boolean
isListener
()
{
return
isListener
;
}
public
void
setListener
(
boolean
listener
)
{
isListener
=
listener
;
}
public
void
addListener
(
OnDuelClipBoardListener
onDuelClipBoardListener
){
onDuelClipBoardListenerList
.
add
(
onDuelClipBoardListener
);
}
public
void
removeListener
(
OnDuelClipBoardListener
onDuelClipBoardListener
){
onDuelClipBoardListenerList
.
remove
(
onDuelClipBoardListener
);
}
public
boolean
isOtherListener
()
{
return
isOtherListener
;
}
public
void
setOtherListener
(
boolean
otherListener
)
{
isOtherListener
=
otherListener
;
}
public
String
getCardSearchMessage
()
{
return
cardSearchMessage
;
}
public
void
setCardSearchMessage
(
String
cardSearchMessage
)
{
this
.
cardSearchMessage
=
cardSearchMessage
;
}
ClipboardManager
.
OnPrimaryClipChangedListener
onPrimaryClipChangedListener
=
new
ClipboardManager
.
OnPrimaryClipChangedListener
()
{
@Override
public
void
onPrimaryClipChanged
()
{
if
(!
isListener
)
return
;
ClipData
clipData
=
clipboardManager
.
getPrimaryClip
();
if
(
clipData
==
null
)
return
;
CharSequence
cs
=
clipData
.
getItemAt
(
0
).
getText
();
final
String
clipMessage
;
if
(
cs
!=
null
)
{
clipMessage
=
cs
.
toString
();
}
else
{
clipMessage
=
null
;
}
//如果复制的内容为空则不执行下面的代码
if
(
TextUtils
.
isEmpty
(
clipMessage
))
{
return
;
}
checkMessage
(
clipMessage
,
null
);
}
};
/**
* 检查复制内容
* @param clipMessage 复制内容
*/
public
void
checkMessage
(
String
clipMessage
,
OnDuelClipBoardListener
onDuelClipBoardListener1
)
{
if
(
TextUtils
.
isEmpty
(
clipMessage
)
)
return
;
boolean
isDebounce
;
if
(
clipMessage
.
equals
(
lastMessage
))
isDebounce
=
true
;
else
isDebounce
=
false
;
lastMessage
=
clipMessage
;
//如果复制的内容是多行作为卡组去判断
if
(
clipMessage
.
contains
(
"\n"
))
{
for
(
String
s
:
DeckTextKey
)
{
//只要包含其中一个关键字就视为卡组
if
(
clipMessage
.
contains
(
s
))
{
if
(
onDuelClipBoardListener1
==
null
)
{
isOtherListener
=
false
;
for
(
int
i
=
0
;
i
<
onDuelClipBoardListenerList
.
size
();
i
++)
{
OnDuelClipBoardListener
onDuelClipBoardListener
=
onDuelClipBoardListenerList
.
get
(
i
);
if
(
onDuelClipBoardListener
.
isEffective
())
{
onDuelClipBoardListener
.
onDeckCode
(
clipMessage
,
isDebounce
);
}
else
{
onDuelClipBoardListenerList
.
remove
(
i
);
i
--;
}
}
isOtherListener
=
true
;
}
else
if
(
isOtherListener
){
onDuelClipBoardListener1
.
onDeckCode
(
clipMessage
,
isDebounce
);
}
return
;
}
}
return
;
}
//如果是卡组url
int
deckStart
=
clipMessage
.
indexOf
(
DECK_URL_PREFIX
);
if
(
deckStart
!=
-
1
)
{
if
(
onDuelClipBoardListener1
==
null
)
{
isOtherListener
=
false
;
for
(
int
i
=
0
;
i
<
onDuelClipBoardListenerList
.
size
();
i
++)
{
OnDuelClipBoardListener
onDuelClipBoardListener
=
onDuelClipBoardListenerList
.
get
(
i
);
if
(
onDuelClipBoardListener
.
isEffective
())
{
onDuelClipBoardListener
.
onDeckUrl
(
clipMessage
.
substring
(
deckStart
+
DECK_URL_PREFIX
.
length
()),
isDebounce
);
}
else
{
onDuelClipBoardListenerList
.
remove
(
i
);
i
--;
}
}
isOtherListener
=
true
;
}
else
if
(
isOtherListener
)
{
onDuelClipBoardListener1
.
onDeckUrl
(
clipMessage
.
substring
(
deckStart
+
DECK_URL_PREFIX
.
length
()),
isDebounce
);
}
return
;
}
int
start
=
-
1
;
int
end
;
String
passwordPrefixKey
=
null
;
for
(
String
s
:
passwordPrefix
)
{
start
=
clipMessage
.
indexOf
(
s
);
passwordPrefixKey
=
s
;
if
(
start
!=
-
1
)
{
break
;
}
}
if
(
start
!=
-
1
)
{
//如果密码含有空格,则以空格结尾
end
=
clipMessage
.
indexOf
(
" "
,
start
);
//如果不含有空格则取片尾所有
if
(
end
==
-
1
)
{
end
=
clipMessage
.
length
();
}
else
{
//如果只有密码前缀而没有密码内容则不跳转
if
(
end
-
start
==
passwordPrefixKey
.
length
())
return
;
}
if
(
onDuelClipBoardListener1
==
null
)
{
isOtherListener
=
false
;
for
(
int
i
=
0
;
i
<
onDuelClipBoardListenerList
.
size
();
i
++)
{
OnDuelClipBoardListener
onDuelClipBoardListener
=
onDuelClipBoardListenerList
.
get
(
i
);
if
(
onDuelClipBoardListener
.
isEffective
())
{
onDuelClipBoardListener
.
onDuelPassword
(
clipMessage
.
substring
(
start
,
end
),
isDebounce
);
}
else
{
onDuelClipBoardListenerList
.
remove
(
i
);
i
--;
}
}
isOtherListener
=
true
;
}
else
if
(
isOtherListener
)
{
onDuelClipBoardListener1
.
onDuelPassword
(
clipMessage
.
substring
(
start
,
end
),
isDebounce
);
}
}
else
{
for
(
String
s
:
cardSearchKey
)
{
int
cardSearchStart
=
clipMessage
.
indexOf
(
s
);
if
(
cardSearchStart
!=
-
1
)
{
//卡查内容
cardSearchMessage
=
clipMessage
.
substring
(
cardSearchStart
+
s
.
length
(),
clipMessage
.
length
());
//如果复制的文本里带?号后面没有内容则不跳转
if
(
TextUtils
.
isEmpty
(
cardSearchMessage
))
{
return
;
}
//如果卡查内容包含“=”并且复制的内容包含“.”不卡查
if
(
cardSearchMessage
.
contains
(
"="
)
&&
clipMessage
.
contains
(
"."
))
{
return
;
}
if
(
onDuelClipBoardListener1
==
null
)
{
isOtherListener
=
false
;
for
(
int
i
=
0
;
i
<
onDuelClipBoardListenerList
.
size
();
i
++)
{
OnDuelClipBoardListener
onDuelClipBoardListener
=
onDuelClipBoardListenerList
.
get
(
i
);
if
(
onDuelClipBoardListener
.
isEffective
())
{
onDuelClipBoardListener
.
onCardQuery
(
cardSearchMessage
,
isDebounce
);
}
else
{
onDuelClipBoardListenerList
.
remove
(
i
);
i
--;
}
}
isOtherListener
=
true
;
}
else
if
(
isOtherListener
)
{
onDuelClipBoardListener1
.
onCardQuery
(
cardSearchMessage
,
isDebounce
);
}
}
}
}
}
}
mobile/src/main/java/cn/garymb/ygomobile/ui/activities/BaseActivity.java
View file @
a12cab99
...
...
@@ -10,8 +10,10 @@ import android.os.Build;
import
android.os.Bundle
;
import
android.os.Looper
;
import
android.text.TextUtils
;
import
android.util.Log
;
import
android.view.MenuItem
;
import
android.view.View
;
import
android.widget.Button
;
import
android.widget.Toast
;
import
androidx.annotation.Nullable
;
...
...
@@ -20,18 +22,36 @@ import androidx.appcompat.app.ActionBar;
import
androidx.appcompat.app.AppCompatActivity
;
import
androidx.appcompat.widget.Toolbar
;
import
com.feihua.dialogutils.util.DialogUtils
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.IOException
;
import
cn.garymb.ygomobile.Constants
;
import
cn.garymb.ygomobile.bean.ServerInfo
;
import
cn.garymb.ygomobile.bean.ServerList
;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.ourygo.base.OnDuelClipBoardListener
;
import
cn.garymb.ygomobile.ourygo.service.DuelAssistantService
;
import
cn.garymb.ygomobile.ourygo.util.DuelAssistantManagement
;
import
cn.garymb.ygomobile.ui.cards.CardSearchAcitivity
;
import
cn.garymb.ygomobile.ui.home.ServerListManager
;
import
cn.garymb.ygomobile.ui.plus.VUiKit
;
import
cn.garymb.ygomobile.utils.DeckUtil
;
import
cn.garymb.ygomobile.utils.FileLogUtil
;
import
cn.garymb.ygomobile.utils.YGOUtil
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
ASSET_SERVER_LIST
;
public
class
BaseActivity
extends
AppCompatActivity
{
public
class
BaseActivity
extends
AppCompatActivity
{
protected
final
static
int
REQUEST_PERMISSIONS
=
0x1000
+
1
;
private
boolean
mExitAnim
=
true
;
private
boolean
mEnterAnim
=
true
;
private
Toast
mToast
;
private
DialogUtils
dialogUtils
;
protected
String
[]
getPermissions
()
{
return
PERMISSIONS
;
...
...
@@ -48,6 +68,7 @@ public class BaseActivity extends AppCompatActivity {
@Override
protected
void
onCreate
(
@Nullable
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
dialogUtils
=
DialogUtils
.
getdx
(
this
);
}
protected
void
setupActionBar
()
{
...
...
@@ -73,6 +94,8 @@ public class BaseActivity extends AppCompatActivity {
}
onActivityResult
(
REQUEST_PERMISSIONS
,
PermissionsActivity
.
PERMISSIONS_GRANTED
,
null
);
}
}
public
Activity
getActivity
()
{
...
...
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/CardSearchActivityImpl.java
View file @
a12cab99
...
...
@@ -25,12 +25,13 @@ import cn.garymb.ygomobile.Constants;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.loader.CardLoader
;
import
cn.garymb.ygomobile.loader.ImageLoader
;
import
cn.garymb.ygomobile.ourygo.util.DuelAssistantManagement
;
import
cn.garymb.ygomobile.ui.activities.BaseActivity
;
import
cn.garymb.ygomobile.ui.activities.WebActivity
;
import
cn.garymb.ygomobile.ui.adapters.CardListAdapter
;
import
cn.garymb.ygomobile.ui.plus.AOnGestureListener
;
import
cn.garymb.ygomobile.ui.plus.DialogPlus
;
import
cn.garymb.ygomobile.
ui.plus.ServiceDuelAssistant
;
import
cn.garymb.ygomobile.
ourygo.service.DuelAssistantService
;
import
cn.garymb.ygomobile.ui.plus.VUiKit
;
import
ocgcore.DataManager
;
import
ocgcore.LimitManager
;
...
...
@@ -60,7 +61,7 @@ class CardSearchActivityImpl extends BaseActivity implements CardLoader.CallBack
setContentView
(
R
.
layout
.
activity_search
);
if
(
TextUtils
.
isEmpty
(
getIntent
().
getStringExtra
(
CardSearchAcitivity
.
SEARCH_MESSAGE
))){
ServiceDuelAssistant
.
cardSearchMessage
=
""
;
DuelAssistantManagement
.
getInstance
().
setCardSearchMessage
(
""
)
;
}
Toolbar
toolbar
=
$
(
R
.
id
.
toolbar
);
setSupportActionBar
(
toolbar
);
...
...
@@ -105,15 +106,15 @@ class CardSearchActivityImpl extends BaseActivity implements CardLoader.CallBack
@Override
protected
void
onRestart
()
{
super
.
onRestart
();
if
(!
isFirstCardSearch
&&!
currentCardSearchMessage
.
equals
(
ServiceDuelAssistant
.
cardSearchMessage
)){
currentCardSearchMessage
=
ServiceDuelAssistant
.
cardSearchMessage
;
if
(!
isFirstCardSearch
&&!
currentCardSearchMessage
.
equals
(
DuelAssistantManagement
.
getInstance
().
getCardSearchMessage
()
)){
currentCardSearchMessage
=
DuelAssistantManagement
.
getInstance
().
getCardSearchMessage
()
;
intentSearch
();
}
}
private
void
intentSearch
(){
// intentSearchMessage=getIntent().getStringExtra(CardSearchAcitivity.SEARCH_MESSAGE);
mCardSelector
.
search
(
ServiceDuelAssistant
.
cardSearchMessage
);
mCardSelector
.
search
(
DuelAssistantManagement
.
getInstance
().
getCardSearchMessage
()
);
}
protected
void
setListeners
()
{
...
...
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/DeckManagerActivityImpl.java
View file @
a12cab99
...
...
@@ -65,19 +65,18 @@ import cn.garymb.ygomobile.ui.cards.deck.DeckItem;
import
cn.garymb.ygomobile.ui.cards.deck.DeckItemTouchHelper
;
import
cn.garymb.ygomobile.ui.cards.deck.DeckItemType
;
import
cn.garymb.ygomobile.ui.cards.deck.DeckLayoutManager
;
import
cn.garymb.ygomobile.ui.mycard.mcchat.util.ImageUtil
;
import
cn.garymb.ygomobile.ui.mycard.mcchat.util.Util
;
import
cn.garymb.ygomobile.mycard.mcchat.util.ImageUtil
;
import
cn.garymb.ygomobile.ui.plus.AOnGestureListener
;
import
cn.garymb.ygomobile.ui.plus.DefaultOnBoomListener
;
import
cn.garymb.ygomobile.ui.plus.DialogPlus
;
import
cn.garymb.ygomobile.
ui.plus.ServiceDuelAssistant
;
import
cn.garymb.ygomobile.
ourygo.service.DuelAssistantService
;
import
cn.garymb.ygomobile.ui.plus.VUiKit
;
import
cn.garymb.ygomobile.utils.BitmapUtil
;
import
cn.garymb.ygomobile.utils.DeckUtil
;
import
cn.garymb.ygomobile.utils.FileUtils
;
import
cn.garymb.ygomobile.utils.IOUtils
;
import
cn.garymb.ygomobile.utils.ShareUtil
;
import
cn.garymb.ygomobile.utils.YGODialogUtil
;
import
cn.garymb.ygomobile.utils.YGOUtil
;
import
ocgcore.DataManager
;
import
ocgcore.data.Card
;
import
ocgcore.data.LimitList
;
...
...
@@ -794,11 +793,11 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
@Override
public
void
onClick
(
View
v
)
{
du
.
dis
();
stopService
(
new
Intent
(
DeckManagerActivityImpl
.
this
,
ServiceDuelAssistant
.
class
));
Util
.
fz
Message
(
DeckManagerActivityImpl
.
this
,
et_code
.
getText
().
toString
().
trim
());
stopService
(
new
Intent
(
DeckManagerActivityImpl
.
this
,
DuelAssistantService
.
class
));
YGOUtil
.
copy
Message
(
DeckManagerActivityImpl
.
this
,
et_code
.
getText
().
toString
().
trim
());
showToast
(
getString
(
R
.
string
.
deck_text_copyed
));
//复制完毕开启决斗助手
Util
.
startDuelService
(
DeckManagerActivityImpl
.
this
);
YGO
Util
.
startDuelService
(
DeckManagerActivityImpl
.
this
);
}
});
...
...
mobile/src/main/java/cn/garymb/ygomobile/ui/home/HomeActivity.java
View file @
a12cab99
...
...
@@ -61,7 +61,7 @@ import cn.garymb.ygomobile.ui.adapters.ServerListAdapter;
import
cn.garymb.ygomobile.ui.adapters.SimpleListAdapter
;
import
cn.garymb.ygomobile.ui.cards.CardSearchAcitivity
;
import
cn.garymb.ygomobile.ui.cards.DeckManagerActivity
;
import
cn.garymb.ygomobile.
ui.
mycard.MyCardActivity
;
import
cn.garymb.ygomobile.mycard.MyCardActivity
;
import
cn.garymb.ygomobile.ui.plus.DefaultOnBoomListener
;
import
cn.garymb.ygomobile.ui.plus.DialogPlus
;
import
cn.garymb.ygomobile.ui.preference.SettingsActivity
;
...
...
@@ -71,8 +71,7 @@ import cn.garymb.ygomobile.utils.AlipayPayUtils;
import
cn.garymb.ygomobile.utils.ComponentUtils
;
import
cn.garymb.ygomobile.utils.FileLogUtil
;
import
cn.garymb.ygomobile.utils.ScreenUtil
;
import
static
cn
.
garymb
.
ygomobile
.
ui
.
mycard
.
mcchat
.
util
.
Util
.
startDuelService
;
import
cn.garymb.ygomobile.utils.YGOUtil
;
public
abstract
class
HomeActivity
extends
BaseActivity
implements
NavigationView
.
OnNavigationItemSelectedListener
{
protected
SwipeMenuRecyclerView
mServerList
;
...
...
@@ -224,8 +223,8 @@ public abstract class HomeActivity extends BaseActivity implements NavigationVie
TrPay
.
getInstance
(
HomeActivity
.
this
).
initPaySdk
(
"e1014da420ea4405898c01273d6731b6"
,
"YGOMobile"
);
//autoupadte checking
checkPgyerUpdateSilent
(
getContext
(),
false
,
false
,
false
);
//
ServiceDuelAssistant
startDuelService
(
this
);
//
DuelAssistantService
YGOUtil
.
startDuelService
(
this
);
//萌卡
StartMycard
();
...
...
mobile/src/main/java/cn/garymb/ygomobile/ui/home/MainActivity.java
View file @
a12cab99
...
...
@@ -14,29 +14,40 @@ import android.widget.Button;
import
androidx.annotation.NonNull
;
import
com.feihua.dialogutils.util.DialogUtils
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
cn.garymb.ygomobile.AppsSettings
;
import
cn.garymb.ygomobile.Constants
;
import
cn.garymb.ygomobile.GameUriManager
;
import
cn.garymb.ygomobile.YGOMobileActivity
;
import
cn.garymb.ygomobile.YGOStarter
;
import
cn.garymb.ygomobile.bean.ServerInfo
;
import
cn.garymb.ygomobile.bean.ServerList
;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.ourygo.base.OnDuelClipBoardListener
;
import
cn.garymb.ygomobile.ourygo.util.DuelAssistantManagement
;
import
cn.garymb.ygomobile.ui.activities.BaseActivity
;
import
cn.garymb.ygomobile.ui.activities.LogoActivity
;
import
cn.garymb.ygomobile.ui.activities.WebActivity
;
import
cn.garymb.ygomobile.ui.plus.DialogPlus
;
import
cn.garymb.ygomobile.ui.plus.VUiKit
;
import
cn.garymb.ygomobile.utils.ComponentUtils
;
import
cn.garymb.ygomobile.utils.DeckUtil
;
import
cn.garymb.ygomobile.utils.IOUtils
;
import
cn.garymb.ygomobile.utils.NetUtils
;
import
cn.garymb.ygomobile.utils.PermissionUtil
;
import
cn.garymb.ygomobile.utils.YGOUtil
;
import
libwindbot.windbot.WindBot
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
ASSET_SERVER_LIST
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
CORE_BOT_CONF_PATH
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
DATABASE_NAME
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
NETWORK_IMAGE
;
public
class
MainActivity
extends
HomeActivity
{
public
class
MainActivity
extends
HomeActivity
implements
OnDuelClipBoardListener
{
private
static
final
String
TAG
=
"ResCheckTask"
;
private
GameUriManager
mGameUriManager
;
private
ImageUpdater
mImageUpdater
;
...
...
@@ -52,6 +63,11 @@ public class MainActivity extends HomeActivity {
int
err
=
getIntent
().
getIntExtra
(
LogoActivity
.
EXTRA_ERROR
,
ResCheckTask
.
ERROR_NONE
);
//资源复制
onCheckCompleted
(
err
,
isNew
);
// if (DuelAssistantManagement.getInstance().isStart()){
// DuelAssistantManagement.getInstance().checkMessage(YGOUtil.getCopyMessage(),this);
// Log.e("BaseActivity","检测复制内容"+YGOUtil.getCopyMessage());
// }
}
@Override
...
...
@@ -62,6 +78,10 @@ public class MainActivity extends HomeActivity {
if
(!
ComponentUtils
.
isActivityRunning
(
this
,
new
ComponentName
(
this
,
YGOMobileActivity
.
class
)))
{
ComponentUtils
.
killActivity
(
this
,
new
ComponentName
(
this
,
YGOMobileActivity
.
class
));
}
if
(
DuelAssistantManagement
.
getInstance
().
isStart
()){
DuelAssistantManagement
.
getInstance
().
checkMessage
(
YGOUtil
.
getCopyMessage
(),
this
);
}
}
@Override
...
...
@@ -211,4 +231,106 @@ public class MainActivity extends HomeActivity {
getGameUriManager
().
doIntent
(
getIntent
());
}
}
@Override
public
void
onDeckCode
(
String
deckCode
,
boolean
isDebounce
)
{
if
(
isDebounce
)
return
;
DialogPlus
dialogPlus
=
new
DialogPlus
(
this
);
dialogPlus
.
setMessage
(
"检测到卡组,是否保存?"
);
dialogPlus
.
setLeftButtonText
(
"保存"
);
dialogPlus
.
setRightButtonText
(
"取消"
);
dialogPlus
.
setLeftButtonListener
(
new
DialogInterface
.
OnClickListener
()
{
@Override
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
DeckUtil
.
saveDeck
(
MainActivity
.
this
,
deckCode
,
false
);
dialog
.
dismiss
();
}
});
dialogPlus
.
setRightButtonListener
(
new
DialogInterface
.
OnClickListener
()
{
@Override
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
dialog
.
dismiss
();
}
});
dialogPlus
.
show
();
}
@Override
public
void
onDeckUrl
(
String
deckUrl
,
boolean
isDebounce
)
{
if
(
isDebounce
)
return
;
DialogPlus
dialogPlus
=
new
DialogPlus
(
this
);
dialogPlus
.
setMessage
(
"检测到卡组,是否保存?"
);
dialogPlus
.
setLeftButtonText
(
"保存"
);
dialogPlus
.
setRightButtonText
(
"取消"
);
dialogPlus
.
setLeftButtonListener
(
new
DialogInterface
.
OnClickListener
()
{
@Override
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
DeckUtil
.
saveDeck
(
MainActivity
.
this
,
deckUrl
,
true
);
dialog
.
dismiss
();
}
});
dialogPlus
.
setRightButtonListener
(
new
DialogInterface
.
OnClickListener
()
{
@Override
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
dialog
.
dismiss
();
}
});
dialogPlus
.
show
();
}
@Override
public
void
onCardQuery
(
String
cardNameKey
,
boolean
isDebounce
)
{
}
@Override
public
void
onDuelPassword
(
String
password
,
boolean
isDebounce
)
{
if
(
isDebounce
)
return
;
DialogPlus
dialogPlus
=
new
DialogPlus
(
this
);
dialogPlus
.
setTitle
(
password
);
dialogPlus
.
setMessage
(
"检测到决斗密码,是否加入房间?"
);
dialogPlus
.
setLeftButtonText
(
"加入"
);
dialogPlus
.
setRightButtonText
(
"取消"
);
dialogPlus
.
setLeftButtonListener
(
new
DialogInterface
.
OnClickListener
()
{
@Override
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
File
xmlFile
=
new
File
(
getFilesDir
(),
Constants
.
SERVER_FILE
);
VUiKit
.
defer
().
when
(()
->
{
ServerList
assetList
=
ServerListManager
.
readList
(
MainActivity
.
this
.
getAssets
().
open
(
ASSET_SERVER_LIST
));
ServerList
fileList
=
xmlFile
.
exists
()
?
ServerListManager
.
readList
(
new
FileInputStream
(
xmlFile
))
:
null
;
if
(
fileList
==
null
)
{
return
assetList
;
}
if
(
fileList
.
getVercode
()
<
assetList
.
getVercode
())
{
xmlFile
.
delete
();
return
assetList
;
}
return
fileList
;
}).
done
((
list
)
->
{
if
(
list
!=
null
)
{
ServerInfo
serverInfo
=
list
.
getServerInfoList
().
get
(
0
);
YGOUtil
.
duelIntent
(
MainActivity
.
this
,
serverInfo
.
getServerAddr
(),
serverInfo
.
getPort
(),
serverInfo
.
getPlayerName
(),
password
);
}
});
dialog
.
dismiss
();
}
});
dialogPlus
.
setRightButtonListener
(
new
DialogInterface
.
OnClickListener
()
{
@Override
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
dialog
.
dismiss
();
}
});
dialogPlus
.
show
();
}
@Override
public
boolean
isEffective
()
{
return
YGOUtil
.
isContextExisted
(
this
);
}
}
mobile/src/main/java/cn/garymb/ygomobile/ui/mycard/mcchat/util/Util.java
deleted
100644 → 0
View file @
4cf8824c
package
cn.garymb.ygomobile.ui.mycard.mcchat.util
;
import
android.app.Activity
;
import
android.content.ClipboardManager
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.os.Build
;
import
android.view.inputmethod.InputMethodManager
;
import
android.widget.Toast
;
import
cn.garymb.ygomobile.AppsSettings
;
import
cn.garymb.ygomobile.ui.plus.DialogPlus
;
import
cn.garymb.ygomobile.ui.plus.ServiceDuelAssistant
;
import
cn.garymb.ygomobile.utils.PermissionUtil
;
public
class
Util
{
//提示
public
static
void
show
(
Context
context
,
String
message
)
{
Toast
.
makeText
(
context
,
message
,
Toast
.
LENGTH_SHORT
).
show
();
}
//关闭输入法
public
static
void
closeKeyboard
(
Activity
activity
)
{
InputMethodManager
inputMethodManager
=
(
InputMethodManager
)
activity
.
getSystemService
(
Context
.
INPUT_METHOD_SERVICE
);
inputMethodManager
.
hideSoftInputFromWindow
((
activity
).
getCurrentFocus
().
getWindowToken
()
,
InputMethodManager
.
HIDE_NOT_ALWAYS
);
}
//复制字符串到剪贴板
public
static
void
fzMessage
(
Context
context
,
String
message
)
{
ClipboardManager
cmb
=
(
ClipboardManager
)
context
.
getSystemService
(
Context
.
CLIPBOARD_SERVICE
);
cmb
.
setText
(
message
);
//复制命令
}
public
static
void
startDuelService
(
Context
context
)
{
if
(
AppsSettings
.
get
().
isServiceDuelAssistant
())
{
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
O
)
{
DialogPlus
dialogPlus
=
PermissionUtil
.
isNotificationPermission
(
context
);
if
(
dialogPlus
==
null
)
context
.
startForegroundService
(
new
Intent
(
context
,
ServiceDuelAssistant
.
class
));
else
dialogPlus
.
show
();
}
else
{
context
.
startService
(
new
Intent
(
context
,
ServiceDuelAssistant
.
class
));
}
}
}
}
mobile/src/main/java/cn/garymb/ygomobile/ui/preference/fragments/SettingFragment.java
View file @
a12cab99
...
...
@@ -36,9 +36,8 @@ import cn.garymb.ygomobile.Constants;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.ui.activities.LogoActivity
;
import
cn.garymb.ygomobile.ui.home.HomeActivity
;
import
cn.garymb.ygomobile.ui.home.MainActivity
;
import
cn.garymb.ygomobile.ui.plus.DialogPlus
;
import
cn.garymb.ygomobile.
ui.plus.ServiceDuelAssistant
;
import
cn.garymb.ygomobile.
ourygo.service.DuelAssistantService
;
import
cn.garymb.ygomobile.ui.plus.VUiKit
;
import
cn.garymb.ygomobile.ui.preference.PreferenceFragmentPlus
;
import
cn.garymb.ygomobile.utils.FileUtils
;
...
...
@@ -48,7 +47,6 @@ import cn.garymb.ygomobile.utils.PermissionUtil;
import
ocgcore.ConfigManager
;
import
ocgcore.DataManager
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
ACTION_RELOAD
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
CORE_SKIN_AVATAR_SIZE
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
CORE_SKIN_BG_SIZE
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
CORE_SKIN_CARD_COVER_SIZE
;
...
...
@@ -195,9 +193,9 @@ public class SettingFragment extends PreferenceFragmentPlus {
if
(
preference
.
getKey
().
equals
(
PREF_START_SERVICEDUELASSISTANT
))
{
if
(
checkBoxPreference
.
isChecked
())
{
PermissionUtil
.
isServicePermission
(
getActivity
(),
true
);
getActivity
().
startService
(
new
Intent
(
getActivity
(),
ServiceDuelAssistant
.
class
));
getActivity
().
startService
(
new
Intent
(
getActivity
(),
DuelAssistantService
.
class
));
}
else
{
getActivity
().
stopService
(
new
Intent
(
getActivity
(),
ServiceDuelAssistant
.
class
));
getActivity
().
stopService
(
new
Intent
(
getActivity
(),
DuelAssistantService
.
class
));
}
}
//如果是音效开关
...
...
mobile/src/main/java/cn/garymb/ygomobile/ui/widget/WebViewPlus.java
View file @
a12cab99
...
...
@@ -3,7 +3,7 @@ package cn.garymb.ygomobile.ui.widget;
import
android.content.Context
;
import
android.util.AttributeSet
;
import
cn.garymb.ygomobile.
ui.
mycard.X5WebView
;
import
cn.garymb.ygomobile.mycard.X5WebView
;
public
class
WebViewPlus
extends
X5WebView
{
...
...
mobile/src/main/java/cn/garymb/ygomobile/utils/DeckUtil.java
View file @
a12cab99
package
cn.garymb.ygomobile.utils
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.net.Uri
;
import
android.os.Build
;
import
android.widget.Toast
;
import
java.io.File
;
import
java.io.IOException
;
...
...
@@ -16,9 +19,13 @@ import java.util.zip.ZipFile;
import
cn.garymb.ygomobile.AppsSettings
;
import
cn.garymb.ygomobile.Constants
;
import
cn.garymb.ygomobile.bean.Deck
;
import
cn.garymb.ygomobile.bean.DeckType
;
import
cn.garymb.ygomobile.bean.events.DeckFile
;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.ourygo.service.DuelAssistantService
;
import
cn.garymb.ygomobile.ui.cards.DeckManagerActivity
;
import
cn.garymb.ygomobile.ui.cards.deck.DeckUtils
;
public
class
DeckUtil
{
...
...
@@ -122,4 +129,28 @@ public class DeckUtil {
}
};
public
static
void
saveDeck
(
Context
context
,
String
deckMessage
,
boolean
isUrl
){
if
(
isUrl
)
{
Deck
deckInfo
=
new
Deck
(
YGOUtil
.
s
(
R
.
string
.
rename_deck
)
+
System
.
currentTimeMillis
(),
Uri
.
parse
(
deckMessage
));
File
file
=
deckInfo
.
saveTemp
(
AppsSettings
.
get
().
getDeckDir
());
Intent
startdeck
=
new
Intent
(
context
,
DeckManagerActivity
.
getDeckManager
());
startdeck
.
putExtra
(
Intent
.
EXTRA_TEXT
,
file
.
getAbsolutePath
());
startdeck
.
addFlags
(
Intent
.
FLAG_ACTIVITY_NEW_TASK
);
context
.
startActivity
(
startdeck
);
}
else
{
//如果是卡组文本
try
{
//以当前时间戳作为卡组名保存卡组
File
file
=
DeckUtils
.
save
(
YGOUtil
.
s
(
R
.
string
.
rename_deck
)
+
System
.
currentTimeMillis
(),
deckMessage
);
Intent
startdeck
=
new
Intent
(
context
,
DeckManagerActivity
.
getDeckManager
());
startdeck
.
putExtra
(
Intent
.
EXTRA_TEXT
,
file
.
getAbsolutePath
());
startdeck
.
addFlags
(
Intent
.
FLAG_ACTIVITY_NEW_TASK
);
context
.
startActivity
(
startdeck
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
Toast
.
makeText
(
context
,
YGOUtil
.
s
(
R
.
string
.
save_failed_bcos
)
+
e
,
Toast
.
LENGTH_SHORT
).
show
();
}
}
}
}
mobile/src/main/java/cn/garymb/ygomobile/utils/YGODialogUtil.java
View file @
a12cab99
...
...
@@ -32,7 +32,7 @@ import cn.garymb.ygomobile.bean.DeckType;
import
cn.garymb.ygomobile.bean.events.DeckFile
;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.ui.adapters.TextSelectAdapter
;
import
cn.garymb.ygomobile.
ui.
mycard.mcchat.util.ImageUtil
;
import
cn.garymb.ygomobile.mycard.mcchat.util.ImageUtil
;
import
cn.garymb.ygomobile.ui.plus.DialogPlus
;
import
cn.garymb.ygomobile.utils.recyclerview.DeckTypeTouchHelperCallback
;
...
...
mobile/src/main/java/cn/garymb/ygomobile/utils/YGOUtil.java
View file @
a12cab99
package
cn.garymb.ygomobile.utils
;
import
android.app.Activity
;
import
android.app.ActivityManager
;
import
android.app.Application
;
import
android.app.Service
;
import
android.content.ClipData
;
import
android.content.ClipboardManager
;
import
android.content.ComponentName
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.os.Build
;
import
android.view.inputmethod.InputMethodManager
;
import
android.widget.Toast
;
import
androidx.core.content.ContextCompat
;
import
java.util.List
;
import
cn.garymb.ygomobile.App
;
import
cn.garymb.ygomobile.AppsSettings
;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.ourygo.service.DuelAssistantService
;
import
cn.garymb.ygomobile.ourygo.util.DuelAssistantManagement
;
import
cn.garymb.ygomobile.ui.plus.DialogPlus
;
import
libwindbot.windbot.game.Duel
;
public
class
YGOUtil
{
...
...
@@ -20,4 +38,101 @@ public class YGOUtil {
public
static
String
s
(
int
stringId
){
return
App
.
get
().
getResources
().
getString
(
stringId
);
}
//关闭输入法
public
static
void
closeKeyboard
(
Activity
activity
)
{
InputMethodManager
inputMethodManager
=
(
InputMethodManager
)
activity
.
getSystemService
(
Context
.
INPUT_METHOD_SERVICE
);
inputMethodManager
.
hideSoftInputFromWindow
((
activity
).
getCurrentFocus
().
getWindowToken
()
,
InputMethodManager
.
HIDE_NOT_ALWAYS
);
}
//复制字符串到剪贴板
public
static
void
copyMessage
(
Context
context
,
String
message
)
{
ClipboardManager
cmb
=
(
ClipboardManager
)
context
.
getSystemService
(
Context
.
CLIPBOARD_SERVICE
);
cmb
.
setText
(
message
);
//复制命令
}
public
static
String
getCopyMessage
(){
ClipboardManager
cm
=
(
ClipboardManager
)
App
.
get
().
getSystemService
(
Context
.
CLIPBOARD_SERVICE
);
ClipData
clipData
=
cm
.
getPrimaryClip
();
if
(
clipData
==
null
)
return
null
;
CharSequence
cs
=
clipData
.
getItemAt
(
0
).
getText
();
final
String
clipMessage
;
if
(
cs
!=
null
)
{
clipMessage
=
cs
.
toString
();
}
else
{
clipMessage
=
null
;
}
return
clipMessage
;
}
public
static
void
startDuelService
(
Context
context
)
{
if
(
AppsSettings
.
get
().
isServiceDuelAssistant
())
{
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
O
)
{
DialogPlus
dialogPlus
=
PermissionUtil
.
isNotificationPermission
(
context
);
if
(
dialogPlus
==
null
)
context
.
startForegroundService
(
new
Intent
(
context
,
DuelAssistantService
.
class
));
else
dialogPlus
.
show
();
}
else
{
context
.
startService
(
new
Intent
(
context
,
DuelAssistantService
.
class
));
}
}
DuelAssistantManagement
.
getInstance
().
setStart
(
true
);
}
public
static
boolean
isServiceExisted
(
Context
context
,
String
className
)
{
ActivityManager
activityManager
=
(
ActivityManager
)
context
.
getSystemService
(
Context
.
ACTIVITY_SERVICE
);
List
<
ActivityManager
.
RunningServiceInfo
>
serviceList
=
activityManager
.
getRunningServices
(
Integer
.
MAX_VALUE
);
if
(!(
serviceList
.
size
()
>
0
))
{
return
false
;
}
for
(
int
i
=
0
;
i
<
serviceList
.
size
();
i
++)
{
ActivityManager
.
RunningServiceInfo
serviceInfo
=
serviceList
.
get
(
i
);
ComponentName
serviceName
=
serviceInfo
.
service
;
if
(
serviceName
.
getClassName
().
equals
(
className
))
{
return
true
;
}
}
return
false
;
}
public
static
boolean
isContextExisted
(
Context
context
)
{
if
(
context
!=
null
)
{
if
(
context
instanceof
Activity
)
{
if
(!((
Activity
)
context
).
isFinishing
())
{
return
true
;
}
}
else
if
(
context
instanceof
Service
)
{
if
(
isServiceExisted
(
context
,
context
.
getClass
().
getName
()))
{
return
true
;
}
}
else
if
(
context
instanceof
Application
)
{
return
true
;
}
}
return
false
;
}
//决斗跳转
public
static
void
duelIntent
(
Context
context
,
String
ip
,
int
port
,
String
name
,
String
password
)
{
Intent
intent1
=
new
Intent
(
"ygomobile.intent.action.GAME"
);
intent1
.
putExtra
(
"host"
,
ip
);
intent1
.
putExtra
(
"port"
,
port
);
intent1
.
putExtra
(
"user"
,
name
);
intent1
.
putExtra
(
"room"
,
password
);
//intent1.setPackage("cn.garymb.ygomobile");
intent1
.
addFlags
(
Intent
.
FLAG_ACTIVITY_NEW_TASK
);
context
.
startActivity
(
intent1
);
}
}
mobile/src/main/res/layout/activity_online_mycard.xml
View file @
a12cab99
...
...
@@ -15,7 +15,7 @@
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<cn.garymb.ygomobile.
ui.
mycard.MyCardWebView
<cn.garymb.ygomobile.mycard.MyCardWebView
android:id=
"@+id/webbrowser"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
...
...
@@ -26,7 +26,7 @@
android:layout_width=
"match_parent"
android:layout_height=
"5px"
/>
</cn.garymb.ygomobile.
ui.
mycard.MyCardWebView>
</cn.garymb.ygomobile.mycard.MyCardWebView>
</RelativeLayout>
...
...
mobile/src/main/res/layout/item_chat.xml
View file @
a12cab99
...
...
@@ -4,7 +4,7 @@
android:layout_height=
"wrap_content"
android:background=
"#00000000"
>
<cn.garymb.ygomobile.
ui.
mycard.mcchat.view.YuanImage
<cn.garymb.ygomobile.mycard.mcchat.view.YuanImage
android:id=
"@+id/ic_avatar"
android:layout_width=
"35dp"
android:layout_height=
"35dp"
...
...
mobile/src/main/res/layout/item_chat_me.xml
View file @
a12cab99
...
...
@@ -4,7 +4,7 @@
android:layout_height=
"wrap_content"
android:background=
"#00000000"
>
<cn.garymb.ygomobile.
ui.
mycard.mcchat.view.YuanImage
<cn.garymb.ygomobile.mycard.mcchat.view.YuanImage
android:id=
"@+id/icm_avatar"
android:layout_width=
"35dp"
android:layout_height=
"35dp"
...
...
mobile/src/main/res/xml/shortcuts.xml
View file @
a12cab99
...
...
@@ -10,7 +10,7 @@
<intent
android:action=
"android.intent.action.VIEW"
android:targetClass=
"cn.garymb.ygomobile.
ui.
mycard.MyCardActivity"
android:targetClass=
"cn.garymb.ygomobile.mycard.MyCardActivity"
android:targetPackage=
"cn.garymb.ygomobile"
/>
<categories
android:name=
"android.shortcut.conversation"
/>
</shortcut>
...
...
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