改由装置端实现RTMP server
parent
5fa64ee06b
commit
9f31e79605
@ -0,0 +1,107 @@
|
||||
package com.xypower.mpremote;
|
||||
|
||||
import android.content.Context;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import dadb.AdbKeyPair;
|
||||
import dadb.Dadb;
|
||||
|
||||
public class AdbManager {
|
||||
private static class InternalAdb {
|
||||
public Dadb adb;
|
||||
public String ip;
|
||||
public int port;
|
||||
}
|
||||
|
||||
private static AdbKeyPair mAdbKeyPair;
|
||||
private static Object mLocker = new Object();
|
||||
private static Map<String, InternalAdb> mAdbs = new HashMap<>();
|
||||
|
||||
public static void initManager(Context context) {
|
||||
File file = new File(context.getFilesDir(), ".keypair");
|
||||
if (!file.exists()) {
|
||||
file.mkdirs();
|
||||
}
|
||||
|
||||
final File pubKeyFile = new File(file, "pub.key");
|
||||
final File priKeyFile = new File(file, "pri.key");
|
||||
if (!priKeyFile.exists() || !pubKeyFile.exists()) {
|
||||
AdbKeyPair.generate(priKeyFile, pubKeyFile);
|
||||
}
|
||||
|
||||
mAdbKeyPair = AdbKeyPair.read(priKeyFile, pubKeyFile);
|
||||
}
|
||||
|
||||
public static Dadb getAdb(String ip, int port) {
|
||||
|
||||
synchronized (mLocker) {
|
||||
if (mAdbs.containsKey(ip)) {
|
||||
InternalAdb adb = mAdbs.get(ip);
|
||||
if (adb != null && adb.port == port) {
|
||||
if (adb.adb != null) {
|
||||
return adb.adb;
|
||||
}
|
||||
}
|
||||
mAdbs.remove(ip);
|
||||
if (adb != null && adb.adb != null) {
|
||||
try {
|
||||
adb.adb.close();
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
adb.adb = null;
|
||||
}
|
||||
adb = null;
|
||||
}
|
||||
|
||||
InternalAdb adb = new InternalAdb();
|
||||
adb.ip = ip;
|
||||
adb.port = port;
|
||||
|
||||
adb.adb = Dadb.create(ip, port, mAdbKeyPair);
|
||||
|
||||
mAdbs.put(ip, adb);
|
||||
|
||||
return adb.adb;
|
||||
}
|
||||
}
|
||||
|
||||
public static void releaseAdb(String ip) {
|
||||
synchronized (mLocker) {
|
||||
if (mAdbs.containsKey(ip)) {
|
||||
InternalAdb adb = mAdbs.get(ip);
|
||||
mAdbs.remove(ip);
|
||||
if (adb != null && adb.adb != null) {
|
||||
try {
|
||||
adb.adb.close();
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
adb.adb = null;
|
||||
}
|
||||
adb = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void clear() {
|
||||
synchronized (mLocker) {
|
||||
for (InternalAdb adb : mAdbs.values()) {
|
||||
if (adb != null && adb.adb != null) {
|
||||
try {
|
||||
adb.adb.close();
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
adb.adb = null;
|
||||
}
|
||||
adb = null;
|
||||
}
|
||||
mAdbs.clear();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue