feat: phone session list + event log connect real server via ServerClient

This commit is contained in:
2026-09-01 19:02:26 +08:00
parent 9458957de5
commit 4cb53a1f0b
2 changed files with 135 additions and 4 deletions
@@ -6,15 +6,71 @@ import android.widget.ListView;
import androidx.appcompat.app.AppCompatActivity;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
/**
* 事件流(接入真实 onEvent)。
* 空壳阶段先演示:连接后把收到的 event 原样追加到列表。
*/
public class EventLogActivity extends AppCompatActivity {
private final String[] events = { "(空壳) 事件流待接入", "onStatus / onEvent -> watch" };
private ArrayAdapter<String> adapter;
private ServerClient client;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_event_log);
ListView list = findViewById(R.id.event_list);
list.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, events));
List<String> data = new ArrayList<>();
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data);
list.setAdapter(adapter);
client = new ServerClient(new ServerClient.Listener() {
@Override
public void onConnectionChanged(boolean connected) {
runOnUiThread(() -> adapter.add(connected ? "[已连接]" : "[连接断开]"));
}
@Override
public void onHello(JSONObject hello) {
// nothing
}
@Override
public void onStatus(JSONObject status) {
runOnUiThread(() -> adapter.add("[status] " + status.toString()));
}
@Override
public void onEvent(JSONObject event) {
runOnUiThread(() -> {
adapter.add(event.toString());
adapter.notifyDataSetChanged();
});
}
@Override
public void onResponse(String requestId, boolean ok, JSONObject result, JSONObject error) {
runOnUiThread(() -> adapter.add("[response] " + (ok ? "ok" : (error != null ? error.optString("message") : "err"))));
}
@Override
public void onError(String message) {
runOnUiThread(() -> adapter.add("[error] " + message));
}
});
client.connect("ws://10.0.2.2:8787/ws", "dshwatch", "change-me");
}
@Override
protected void onDestroy() {
super.onDestroy();
if (client != null) client.close();
}
}
@@ -6,15 +6,90 @@ import android.widget.ListView;
import androidx.appcompat.app.AppCompatActivity;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
/**
* 会话列表(接入真实 session.list)。
* 空壳阶段先用一个独立 ServerClient 连接演示;后续统一走 DshApp 共享连接。
*/
public class SessionListActivity extends AppCompatActivity {
private final String[] sessions = { "会话 demo-1", "会话 demo-2", "会话 demo-3", "(空壳列表)" };
private ArrayAdapter<String> adapter;
private ServerClient client;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_session_list);
ListView list = findViewById(R.id.session_list);
list.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, sessions));
List<String> data = new ArrayList<>();
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data);
list.setAdapter(adapter);
client = new ServerClient(new ServerClient.Listener() {
@Override
public void onConnectionChanged(boolean connected) {
runOnUiThread(() -> adapter.add(connected ? "[已连接]" : "[连接断开]"));
}
@Override
public void onHello(JSONObject hello) {
client.sendRequest("session.list", new JSONObject());
}
@Override
public void onStatus(JSONObject status) {
runOnUiThread(() -> adapter.add("[status] " + status.optString("model")));
}
@Override
public void onEvent(JSONObject event) {
// ignore here
}
@Override
public void onResponse(String requestId, boolean ok, JSONObject result, JSONObject error) {
runOnUiThread(() -> {
if (ok && result != null) {
JSONArray items = result.optJSONArray("items");
if (items != null) {
adapter.clear();
for (int i = 0; i < items.length(); i++) {
JSONObject item = items.optJSONObject(i);
String id = item != null ? item.optString("sessionId") : "?";
boolean running = item != null && item.optBoolean("running", false);
adapter.add((running ? "● " : "○ ") + id);
}
adapter.notifyDataSetChanged();
}
} else {
adapter.add("[error] " + (error != null ? error.optString("message") : "unknown"));
adapter.notifyDataSetChanged();
}
});
}
@Override
public void onError(String message) {
runOnUiThread(() -> {
adapter.add("[error] " + message);
adapter.notifyDataSetChanged();
});
}
});
// 空壳:默认连本机模拟器 server,后续从设置读取
client.connect("ws://10.0.2.2:8787/ws", "dshwatch", "change-me");
}
@Override
protected void onDestroy() {
super.onDestroy();
if (client != null) client.close();
}
}