我必须在android app和c ++ console应用程序之间建立连接: 控制台应用程序假设是客户端,它有4个命令从服务器获取数据,这是Android设备。换句话说,我需要在控制台应用程序中显示设备信息(BT / WIFI开/关,BATTERY LVL)。
我创建了客户端,我也有我要检查的东西的代码(例如,如果BT打开)。 我唯一缺少的是这些之间的联系,我没有服务器代码的经验,我需要你的帮助,这是怎么做的或教程的链接因为我找不到一些。< / p>
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);
}
答案 0 :(得分:2)
虽然你的问题太宽泛而且可能会被关闭,但我会给你一个忽略的线索来实施。
使用Java网络API(套接字编程),您应该选择一个端口号并开始监听。这里的关键是您的Android设备和运行该C ++应用程序的计算机必须连接到同一网络(例如WLAN或LAN)。
在这种情况下,您的设备将分配两个唯一的IP地址,您也可以手动设置它们。
在客户端(C ++),您应该创建一个TCP套接字,并根据其端口号连接到Android设备的IP地址。因此,使用这种方式,您可以将C ++连接到Android应用程序中运行的Java服务器。另外,您应该使用Java套接字API接受Android应用中的传入连接。
建议:永远不要从头开始创建应用,始终使用众所周知的libraries。这使得开发过程更快,也更愉快。 :)
答案 1 :(得分:0)
如果您的意思是使用交叉编译器为Android设备创建了C ++。我可以启动并执行您自己的二进制应用程序已经为您的Android应用程序构建。
最常见的用法是提取到/data/data/yourapp/somewhere
内的文件夹,启动自己的c ++应用程序。然后,在单独的线程中启动此应用程序。
要在Java Android和您的C ++应用程序之间进行交互,我可以为您提供Linux操作系统的主要变体:
1. TCP-IP服务器 - 客户端。
2.使用管道交互:FIFO(文件输入 - 文件输出)。
3.或者只是简单地运行带有结果的输入参数的c ++应用程序。当然,你读取sdtout并像通常的操作系统一样写入stdin。
如果您指的是通常的Windows / MacOS / Linux应用程序,则必须使用WiFi / BlueTooth / NFS / Lan / adb(日志)/连接与手机进行交互,您的设备是否已植根。也就是说,首先您必须定义必须使用的硬件。但在这种情况下主要相互作用:TCP-IP。