c ++与Android应用程序

时间:2016-01-07 14:59:05

标签: android c++ server console-application

我必须在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);


}

2 个答案:

答案 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。