c++ 控制台应用程序连接到 android 应用程序
c++ Console application connection to android app
我必须在 android 应用程序和 C++ 控制台应用程序之间建立连接:
控制台应用程序假设是客户端,它有 4 个命令从 android 设备的服务器获取数据。换句话说,我需要在控制台应用程序中显示设备信息(BT/WIFI on/off,BATTERY LVL)。
我创建了客户端,我也有我必须检查的东西的代码(例如,如果 BT 打开)。
我唯一缺少的是它们之间的联系,我没有服务器代码方面的经验,我需要你的帮助,这是如何完成的或教程链接,因为我没有找到一些。
android代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//IMEI init
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
IMEI = telephonyManager.getDeviceId();
//software version init
PackageInfo pInfo = null;
try {
pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
int SoftwareVersion = pInfo.versionCode;
//battery lvl init
battery = Library.getBatteryLevel(this);
//android id init
android_id = Secure.getString(this.getContentResolver(),
Secure.ANDROID_ID);
//android availability init
internetaval = Library.isNetworkAvailable(this);
//finish init <<~~
TextView tv = (TextView) findViewById(R.id.tv1);
tv.setText(" " + internetaval);
Library.setWifi(this,false);
}
虽然你的问题太宽泛,容易被关闭,但我会给你一个忽略的线索来实现。
使用 Java 网络 API(套接字编程),您应该选择一个端口号并开始监听。这里的关键是你的 Android 设备和你的计算机 运行 C++ 应用程序必须连接到同一网络(例如 WLAN 或 LAN)。
在这种情况下,您的两台设备都会分配到两个唯一的 IP 地址,您也可以手动设置它们。
在您的客户端 (C++) 中,您应该创建一个 TCP 套接字并根据其端口号连接到 Android 设备的 IP 地址。因此,使用这种方式,您可以将 C++ 连接到 Android 应用程序中的 Java 服务器 运行。同样在另一方面,您应该使用 Java 套接字 API 在 Android 应用程序中接受传入连接。
建议:永远不要从头开始创建您的应用程序,始终使用well-knownlibraries。这使得开发过程更快,也更愉快。 :)
如果您的意思是您已经使用 cross-compiler 为您的 Android 设备创建了一个 C++。我可以启动并执行您自己的二进制应用程序已经为您的 Android 应用程序构建。
最常见的用法是解压缩到 /data/data/yourapp/somewhere
内的文件夹,启动您自己的 C++ 应用程序。然后,在单独的线程中启动此应用程序。
要在 Java Android 和您的 C++ 应用程序之间进行交互,我可以为您提供 linux OS 的主要变体:
1. TCP-IP server-client。
2. 使用管道交互:FIFO(文件输入 - 文件输出)。
3. 或者只是简单 运行 你的 c++ 应用程序,带有一些输入参数和结果。当然,您像往常一样读取 sdtout 并写入 stdin OS.
如果您指的是普通的 Windows/MacOS/Linux 应用程序,您必须使用 WiFi/BlueTooth/NFS/Lan/adb(Log)/ 连接与 Phone 交互,您的设备是否已获得 root 权限。也就是说,首先您必须定义必须使用的硬件。但在这种情况下主要交互:TCP-IP.
我必须在 android 应用程序和 C++ 控制台应用程序之间建立连接: 控制台应用程序假设是客户端,它有 4 个命令从 android 设备的服务器获取数据。换句话说,我需要在控制台应用程序中显示设备信息(BT/WIFI on/off,BATTERY LVL)。
我创建了客户端,我也有我必须检查的东西的代码(例如,如果 BT 打开)。 我唯一缺少的是它们之间的联系,我没有服务器代码方面的经验,我需要你的帮助,这是如何完成的或教程链接,因为我没有找到一些。
android代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//IMEI init
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
IMEI = telephonyManager.getDeviceId();
//software version init
PackageInfo pInfo = null;
try {
pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
int SoftwareVersion = pInfo.versionCode;
//battery lvl init
battery = Library.getBatteryLevel(this);
//android id init
android_id = Secure.getString(this.getContentResolver(),
Secure.ANDROID_ID);
//android availability init
internetaval = Library.isNetworkAvailable(this);
//finish init <<~~
TextView tv = (TextView) findViewById(R.id.tv1);
tv.setText(" " + internetaval);
Library.setWifi(this,false);
}
虽然你的问题太宽泛,容易被关闭,但我会给你一个忽略的线索来实现。
使用 Java 网络 API(套接字编程),您应该选择一个端口号并开始监听。这里的关键是你的 Android 设备和你的计算机 运行 C++ 应用程序必须连接到同一网络(例如 WLAN 或 LAN)。
在这种情况下,您的两台设备都会分配到两个唯一的 IP 地址,您也可以手动设置它们。
在您的客户端 (C++) 中,您应该创建一个 TCP 套接字并根据其端口号连接到 Android 设备的 IP 地址。因此,使用这种方式,您可以将 C++ 连接到 Android 应用程序中的 Java 服务器 运行。同样在另一方面,您应该使用 Java 套接字 API 在 Android 应用程序中接受传入连接。
建议:永远不要从头开始创建您的应用程序,始终使用well-knownlibraries。这使得开发过程更快,也更愉快。 :)
如果您的意思是您已经使用 cross-compiler 为您的 Android 设备创建了一个 C++。我可以启动并执行您自己的二进制应用程序已经为您的 Android 应用程序构建。
最常见的用法是解压缩到 /data/data/yourapp/somewhere
内的文件夹,启动您自己的 C++ 应用程序。然后,在单独的线程中启动此应用程序。
要在 Java Android 和您的 C++ 应用程序之间进行交互,我可以为您提供 linux OS 的主要变体:
1. TCP-IP server-client。
2. 使用管道交互:FIFO(文件输入 - 文件输出)。
3. 或者只是简单 运行 你的 c++ 应用程序,带有一些输入参数和结果。当然,您像往常一样读取 sdtout 并写入 stdin OS.
如果您指的是普通的 Windows/MacOS/Linux 应用程序,您必须使用 WiFi/BlueTooth/NFS/Lan/adb(Log)/ 连接与 Phone 交互,您的设备是否已获得 root 权限。也就是说,首先您必须定义必须使用的硬件。但在这种情况下主要交互:TCP-IP.