第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法通過 USB 連接 Java 桌面應(yīng)用程序和 Android 應(yīng)用程序

無法通過 USB 連接 Java 桌面應(yīng)用程序和 Android 應(yīng)用程序

慕桂英3389331 2023-06-14 14:34:56
我找不到任何通過 USB 連接 Android 應(yīng)用程序和桌面應(yīng)用程序的解決方案。我需要通過 USB 從我的桌面軟件向 Android 應(yīng)用程序發(fā)送數(shù)據(jù)。最好的解決方案允許我直接與我的 Android 應(yīng)用程序?qū)υ捯园l(fā)送 JSON 對象,否則在智能手機上發(fā)送文件。你有什么解決辦法嗎?
查看完整描述

2 回答

?
慕運維8079593

TA貢獻(xiàn)1876條經(jīng)驗 獲得超5個贊

太好了,我最終使用了 ADB,它運行良好。我可以將對象直接發(fā)送到我的 Android 應(yīng)用程序。


桌面類


import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.net.Socket;

import java.net.UnknownHostException;


import callbacks.MainCallbacks;


public class UsbConnect {

? ? private Socket socket = null;

? ? private ObjectOutputStream out = null;

? ? private ObjectInputStream in = null;


? ? private boolean logged = false;

? ? private boolean play = true;


? ? private MainCallbacks callbacks;


? ? public UsbConnect(MainCallbacks callbacks) {

? ? ? ? this.callbacks = callbacks;


? ? ? ? new Thread(new Runnable() {

? ? ? ? ? ? @Override

? ? ? ? ? ? public void run() {

? ? ? ? ? ? ? ? while(play) {

? ? ? ? ? ? ? ? ? ? if(!logged) {

? ? ? ? ? ? ? ? ? ? ? ? // Tentative d'ouverture du port?

? ? ? ? ? ? ? ? ? ? ? ? if(!setPort()) {? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? ? ? ? ? ? ? ? ? ? ? continue;

? ? ? ? ? ? ? ? ? ? ? ? }


? ? ? ? ? ? ? ? ? ? ? ? // Tentative de connexion

? ? ? ? ? ? ? ? ? ? ? ? if(connexion()) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? callbacks.pdaConnect();

? ? ? ? ? ? ? ? ? ? ? ? ? ? logged = true;

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? else {

? ? ? ? ? ? ? ? ? ? ? ? ? ? continue;

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? else {

? ? ? ? ? ? ? ? ? ? ? ? if(!testConnexion()) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? callbacks.pdaDisconnect();

? ? ? ? ? ? ? ? ? ? ? ? ? ? logged = false;

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? }


? ? ? ? ? ? ? ? ? ? try {

? ? ? ? ? ? ? ? ? ? ? ? Thread.sleep(1000);

? ? ? ? ? ? ? ? ? ? } catch (InterruptedException e) {

? ? ? ? ? ? ? ? ? ? ? ? e.printStackTrace();

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }).start();

? ? }


? ? private void sendData(Object o) {

? ? ? ? try {

? ? ? ? ? ? out.writeObject(o);

? ? ? ? ? ? out.flush();

? ? ? ? } catch (IOException e) {

? ? ? ? ? ? callbacks.pdaDisconnect();

? ? ? ? ? ? logged = false;

? ? ? ? }

? ? }


? ? private void destroy() {

? ? ? ? play = false;


? ? ? ? try {

? ? ? ? ? ? in.close();

? ? ? ? ? ? out.close();


? ? ? ? ? ? if (socket != null)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? socket.close();

? ? ? ? ? ? }

? ? ? ? } catch (IOException e) {

? ? ? ? ? ? // NOTHING

? ? ? ? }

? ? }


? ? private boolean testConnexion() {

? ? ? ? try{

? ? ? ? ? ? in = new ObjectInputStream(socket.getInputStream());

? ? ? ? }

? ? ? ? catch (IOException io){

? ? ? ? ? ? return false;

? ? ? ? }

? ? ? ? return true;

? ? }


? ? protected boolean connexion() {

? ? ? ? try{

? ? ? ? ? ? socket = new Socket("127.0.0.1", 38300);


? ? ? ? ? ? try{

? ? ? ? ? ? ? ? out = new ObjectOutputStream(socket.getOutputStream());

? ? ? ? ? ? ? ? out.flush();

? ? ? ? ? ? ? ? in = new ObjectInputStream(socket.getInputStream());


? ? ? ? ? ? ? ? String message = (String) in.readObject();

? ? ? ? ? ? ? ? System.out.println("server>" + message);


? ? ? ? ? ? }

? ? ? ? ? ? catch (IOException io){

? ? ? ? ? ? ? ? return false;

? ? ? ? ? ? }


? ? ? ? ? ? return true;

? ? ? ? }

? ? ? ? catch (UnknownHostException e){

? ? ? ? ? ? return false;

? ? ? ? }

? ? ? ? catch (IOException e){

? ? ? ? ? ? return false;

? ? ? ? }

? ? ? ? catch (Exception e){

? ? ? ? ? ? return false;

? ? ? ? }

? ? }


? ? private boolean setPort() {

? ? ? ? try {

? ? ? ? ? ? ProcessBuilder processBuilder = new ProcessBuilder();

? ? ? ? ? ? processBuilder.command("cmd.exe", "/c", "C:\\Users\\Code\\Desktop\\adb.exe forward tcp:38300 tcp:38300");

? ? ? ? ? ? Process process;


? ? ? ? ? ? process = processBuilder.start();


? ? ? ? ? ? int exitVal = -12;


? ? ? ? ? ? try {

? ? ? ? ? ? ? ? exitVal=process.waitFor();

? ? ? ? ? ? } catch (InterruptedException e) {

? ? ? ? ? ? ? ? e.printStackTrace();

? ? ? ? ? ? ? ? return false;

? ? ? ? ? ? }


? ? ? ? ? ? if (exitVal == 0) {

? ? ? ? ? ? ? ? return true;

? ? ? ? ? ? } else {

? ? ? ? ? ? ? ? return false;

? ? ? ? ? ? }

? ? ? ? } catch (IOException e1) {

? ? ? ? ? ? e1.printStackTrace();

? ? ? ? ? ? return false;

? ? ? ? }

? ? }

}

當(dāng)設(shè)備連接到 usb 端口時,我的類監(jiān)聽器,設(shè)置端口 adb,然后它嘗試連接到智能手機上的套接字服務(wù)器。


setPort()方法是設(shè)置端口,需要嵌入adb.exe及其dll


安卓類


server = new ServerSocket(38300);

client = server.accept();


out = new ObjectOutputStream(client.getOutputStream());

ois = new ObjectInputStream(client.getInputStream());

查看完整回答
反對 回復(fù) 2023-06-14
?
滄海一幻覺

TA貢獻(xiàn)1824條經(jīng)驗 獲得超5個贊

據(jù)我所知,這只能通過 ADB(Android 調(diào)試橋)實現(xiàn)。您需要在您的 Android 設(shè)備上啟用 USB 調(diào)試才能正常工作。此外,android adb 可執(zhí)行文件必須存在于桌面 pc 上。(如果需要,您可以將其與桌面應(yīng)用程序可執(zhí)行文件一起發(fā)布。)

通信本身將通過 tcp 套接字進(jìn)行。您的 android 應(yīng)用程序必須偵聽 tcp 端口,而您的桌面應(yīng)用程序必須打開該端口上的連接。

為此,您必須通過此 adb 命令將 tcp 端口從桌面 pc 轉(zhuǎn)發(fā)到 android 設(shè)備:

adb?forward?tcp:6100?tcp:7100

您可以根據(jù)需要更改端口。第一個是桌面 pc 上的端口,第二個是通信將轉(zhuǎn)發(fā)到 android 設(shè)備上的端口。

查看完整回答
反對 回復(fù) 2023-06-14
  • 2 回答
  • 0 關(guān)注
  • 185 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號