开机音乐
This commit is contained in:
@@ -68,6 +68,10 @@ public class Main extends Service {
|
||||
|
||||
private static DeviceInfo deviceInfo = new DeviceInfo("未知序列号", "0%", 0, "未知游戏");
|
||||
|
||||
// 控制端地址
|
||||
private InetAddress linkAddress;
|
||||
private int linkPort;
|
||||
|
||||
// ================= 会话状态类 =================
|
||||
private static class SessionState {
|
||||
int expectedSequence = 0; // 该会话的下一个期望序列号
|
||||
@@ -340,8 +344,8 @@ public class Main extends Service {
|
||||
}
|
||||
|
||||
// 旧格式消息处理(兼容)
|
||||
Log.i(TAG, "收到旧格式消息: " + message);
|
||||
handleLegacyMessage(message, senderAddress, senderPort);
|
||||
Log.i(TAG, "收到连接消息: " + message);
|
||||
handleLinkMessage(message, senderAddress, senderPort);
|
||||
}
|
||||
|
||||
private void handleAck(int ackSeq, String content) {
|
||||
@@ -433,49 +437,39 @@ public class Main extends Service {
|
||||
private void processValidMessage(String message, InetAddress senderAddress) {
|
||||
// 实际业务处理
|
||||
Log.i(TAG, "开始处理有效消息 -> " + message);
|
||||
|
||||
try {
|
||||
// 检查消息是否为JSON格式
|
||||
if (message.trim().startsWith("{") && message.trim().endsWith("}")) {
|
||||
// 解析JSON消息
|
||||
org.json.JSONObject jsonMsg = new org.json.JSONObject(message);
|
||||
String intent = jsonMsg.optString("intent");
|
||||
String data = jsonMsg.optString("data");
|
||||
Log.i(TAG, "intent-" + intent + " data-" + data);
|
||||
|
||||
if ("Play".equals(intent)) {
|
||||
String packageName = jsonMsg.optString("PackageName");
|
||||
if ("play".equals(intent)) {
|
||||
org.json.JSONObject playMsg = new org.json.JSONObject(data);
|
||||
String packageName = playMsg.optString("packageName");
|
||||
Log.i(TAG, "执行播放指令,包名: " + packageName);
|
||||
callUnity("AppManager", "LaunchApp", packageName);
|
||||
} else if ("GetPackageInfos".equals(intent)) {
|
||||
} else if ("getPackageInfos".equals(intent)) {
|
||||
Log.i(TAG, "执行获取所有包信息");
|
||||
getInstalledPackages();
|
||||
String escapedPackageNames = packageNames.replace("\"", "\\\""); // 转义引号
|
||||
String jsonData = "{\"intent\":\"packageInfos\",\"data\":\"" + escapedPackageNames + "\"}";
|
||||
sendReliable(senderAddress, 8888, jsonData);
|
||||
send2ControllerReliable("packageInfos", escapedPackageNames);
|
||||
} else if ("playing".equals(intent)) {
|
||||
String name = jsonMsg.optString("name");
|
||||
Log.i(TAG, "开始游玩" + name);
|
||||
deviceInfo.status = 2;
|
||||
deviceInfo.playing = name;
|
||||
// 获取设备信息的JSON表示
|
||||
String jsonResponse = getDeviceInfoAsJson();
|
||||
send2ControllerReliable("playing", "");
|
||||
send2ControllerReliable("updateDeviceInfo", jsonResponse);
|
||||
}
|
||||
// 可以根据需要添加更多intent类型
|
||||
else {
|
||||
Log.w(TAG, "未知的intent类型: " + intent);
|
||||
}
|
||||
} else {
|
||||
// 处理原始的简单指令格式(向后兼容)
|
||||
if ("PLAY".equals(message)) {
|
||||
Log.i(TAG, "执行播放指令");
|
||||
callUnity("AppManager", "UnityMethod", "play");
|
||||
} else if ("STOP".equals(message)) {
|
||||
Log.i(TAG, "执行停止指令");
|
||||
callUnity("AppManager", "UnityMethod", "stop");
|
||||
} else if ("GetPackageInfos".equals(message)) {
|
||||
Log.i(TAG, "执行获取所有包信息");
|
||||
getInstalledPackages();
|
||||
String escapedPackageNames = packageNames.replace("\"", "\\\""); // 转义引号
|
||||
String jsonData = "{\"intent\":\"packageInfos\",\"data\":\"" + escapedPackageNames + "\"}";
|
||||
sendReliable(senderAddress, 8888, jsonData);
|
||||
} else {
|
||||
Log.w(TAG, "未知的简单指令: " + message);
|
||||
}
|
||||
}
|
||||
} catch (org.json.JSONException e) {
|
||||
Log.e(TAG, "解析JSON消息失败: " + e.getMessage());
|
||||
@@ -559,21 +553,39 @@ public class Main extends Service {
|
||||
});
|
||||
}
|
||||
|
||||
// ================= 旧版兼容处理 =================
|
||||
private void handleLegacyMessage(String message, InetAddress senderAddress, int senderPort) {
|
||||
// 给控制端发送可靠信息
|
||||
private void send2ControllerReliable(String intent, String data) {
|
||||
String jsonData = "{\"intent\":\"" + intent + "\",\"data\":\"" + data + "\"}";
|
||||
sendReliable(linkAddress, linkPort, jsonData);
|
||||
}
|
||||
|
||||
// 给控制端发送不可靠消息
|
||||
private void send2ControllerUnreliable(String intent, String data) {
|
||||
String jsonData = "{\"intent\":\"" + intent + "\",\"data\":\"" + data + "\"}";
|
||||
sendUnreliable(linkAddress, linkPort, jsonData);
|
||||
}
|
||||
|
||||
private void handleLinkMessage(String message, InetAddress senderAddress, int senderPort) {
|
||||
// 不处理来自本机相同端口的消息
|
||||
if (isLocalMessage(senderAddress, senderPort)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ("DISCOVER".equals(message)) {
|
||||
// 更新设备状态为在线
|
||||
deviceInfo.status = 1;
|
||||
// 保存控制端信息
|
||||
linkAddress = senderAddress;
|
||||
linkPort = senderPort;
|
||||
|
||||
if (deviceInfo.status == 0) {
|
||||
// 更新设备状态为在线
|
||||
deviceInfo.status = 1;
|
||||
}
|
||||
|
||||
// 获取设备信息的JSON表示
|
||||
String jsonResponse = getDeviceInfoAsJson();
|
||||
|
||||
sendUnreliable(senderAddress, senderPort, jsonResponse);
|
||||
// sendUnreliable(senderAddress, senderPort, jsonResponse);
|
||||
send2ControllerUnreliable("updateDeviceInfo", jsonResponse);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -657,12 +669,7 @@ public class Main extends Service {
|
||||
data.put("power", deviceInfo.power);
|
||||
data.put("status", deviceInfo.status);
|
||||
data.put("playing", deviceInfo.playing);
|
||||
|
||||
org.json.JSONObject json = new org.json.JSONObject();
|
||||
json.put("intent", "updateDeviceInfo");
|
||||
json.put("data", "\"" + data + "\"");
|
||||
|
||||
return json.toString();
|
||||
return data.toString().replace("\"", "\\\"");
|
||||
} catch (org.json.JSONException e) {
|
||||
Log.e(TAG, "序列化设备信息失败: " + e.getMessage());
|
||||
return "{}";
|
||||
|
||||
@@ -209,6 +209,7 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 9b3159c935f3772479f4923d8edd8701, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
startUp: {fileID: 1518202725}
|
||||
--- !u!1 &283105937
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -522,6 +523,134 @@ Transform:
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1518202724
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1518202726}
|
||||
- component: {fileID: 1518202725}
|
||||
m_Layer: 0
|
||||
m_Name: StartUp
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!82 &1518202725
|
||||
AudioSource:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1518202724}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 4
|
||||
OutputAudioMixerGroup: {fileID: 0}
|
||||
m_audioClip: {fileID: 8300000, guid: a7196a55982af884db82087fc47d446a, type: 3}
|
||||
m_PlayOnAwake: 0
|
||||
m_Volume: 1
|
||||
m_Pitch: 1
|
||||
Loop: 0
|
||||
Mute: 0
|
||||
Spatialize: 0
|
||||
SpatializePostEffects: 0
|
||||
Priority: 128
|
||||
DopplerLevel: 1
|
||||
MinDistance: 1
|
||||
MaxDistance: 500
|
||||
Pan2D: 0
|
||||
rolloffMode: 0
|
||||
BypassEffects: 0
|
||||
BypassListenerEffects: 0
|
||||
BypassReverbZones: 0
|
||||
rolloffCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
- serializedVersion: 3
|
||||
time: 1
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
panLevelCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
spreadCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
reverbZoneMixCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
--- !u!4 &1518202726
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1518202724}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &2128278267
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -727,3 +856,4 @@ SceneRoots:
|
||||
- {fileID: 301472688}
|
||||
- {fileID: 2128278269}
|
||||
- {fileID: 35413077}
|
||||
- {fileID: 1518202726}
|
||||
|
||||
@@ -24,6 +24,8 @@ public class AppManager : MonoBehaviour
|
||||
{
|
||||
public static AppManager Ins { get; private set; }
|
||||
|
||||
public AudioSource startUp;
|
||||
|
||||
void Start()
|
||||
{
|
||||
Ins = this;
|
||||
@@ -37,6 +39,7 @@ public class AppManager : MonoBehaviour
|
||||
CoroutineTaskManager.Instance.WaitSecondTodo(() =>
|
||||
{
|
||||
// QRScanPanel.Show();
|
||||
startUp.Play();
|
||||
LoginPanel.Show();
|
||||
GetSnAndCallback();
|
||||
GetPowerAndCallback();
|
||||
|
||||
8
Assets/_MagicCaptainService/Voices.meta
Normal file
8
Assets/_MagicCaptainService/Voices.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ea72f324f7339b44d9ae434fa9c15a52
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/_MagicCaptainService/Voices/StartUp.mp3
Normal file
BIN
Assets/_MagicCaptainService/Voices/StartUp.mp3
Normal file
Binary file not shown.
23
Assets/_MagicCaptainService/Voices/StartUp.mp3.meta
Normal file
23
Assets/_MagicCaptainService/Voices/StartUp.mp3.meta
Normal file
@@ -0,0 +1,23 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a7196a55982af884db82087fc47d446a
|
||||
AudioImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 7
|
||||
defaultSettings:
|
||||
serializedVersion: 2
|
||||
loadType: 0
|
||||
sampleRateSetting: 0
|
||||
sampleRateOverride: 44100
|
||||
compressionFormat: 1
|
||||
quality: 1
|
||||
conversionMode: 0
|
||||
preloadAudioData: 0
|
||||
platformSettingOverrides: {}
|
||||
forceToMono: 0
|
||||
normalize: 1
|
||||
loadInBackground: 0
|
||||
ambisonic: 0
|
||||
3D: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user