この質問はに関連している:https://stackoverflow.com/questions/39661583/android-linux-deploy-access-phone-sensorsソケット
私が根付い三星ギャラクシーS3を持って、私はLinuxのデプロイhttps://play.google.com/store/apps/details?id=ru.meefik.linuxdeploy&hl=en_GBを使用して電話でのUbuntuをインストールしました。これは、ubuntuが 'chrooted'(https://en.wikipedia.org/wiki/Chroot)envで動作し、電話のアンドロイド部分のファイルに直接アクセスできないことを意味します。
2つのOS間の通信を設定して、私が電話機能にアクセスするubuntu OSからメソッドを呼び出せるようにしたいと考えています。
私は、ソケットサーバーとして機能するアンドロイド部分に単純なアプリを書くことでこれを行うことができると思いました。私はその後、アンドロイドアプリ上のソケットに接続するubuntuで動作するシンプルなクライアントJavaプログラムを持っています。
これは私がこれまで持っているものです。
アンドロイドMainActivity.javaファイル:
package com.example.sam.myfirstapp;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class MainActivity extends AppCompatActivity {
public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void go(View view){
try{
ServerSocket serverSock = new ServerSocket(4242);
while(true){
Socket sock = serverSock.accept();
PrintWriter writer = new PrintWriter(sock.getOutputStream());
String advice ="This is my sent message";
writer.println(advice);
writer.close();
}
} catch (IOException ex){
ex.printStackTrace();
}
}
}
activity_main.xmlファイル:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText android:id="@+id/edit_message"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/edit_message" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_start"
android:onClick="go"/>
</LinearLayout>
Ubuntuの上で動作するJavaファイルがあります:
サーバーとクライアントの両方が正常にコンパイルされているようです。 私はアンドロイドでアプリケーションを実行し、ボタンをクリックしてサーバーを開始します。 私はubuntuに行き、javaプログラムを実行します。
javaプログラムによって接続の拒否例外が発生します。
osの間のこの通信方法は可能ですか?もしそうなら、何がうまくいかず、どのように修正するのですか?
どのようにクライアントのIP、192.168.0.10を確認できますか?私は試してみる、127.0.0.1とlocalhost – Adem
はい私はそれらを最初に試みたが、接続が拒否された。だから、私はルータが使用していたIPをルックアップしてみましたが、まだ接続はエラーを拒否しました。 – user27815
サーバーは機能していますか? – dcow