2017-04-20 7 views
0

Raspberry PI GPIOを制御するAndroid Appを作成しようとしています。どちらも同じネットワークに接続されています。私は静的IPと動的IPをポート80で転送しようとしました。まだ成功していない。 ここで私が使用しているコード(Source)です:GPNを制御するためにAndroidアプリをRaspberry Piに接続できません

public class Main extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 



    Switch swi = (Switch)findViewById(R.id.takE); 
    swi.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      if(isChecked){ 
       new Background_get().execute("led1=1"); 
      }else{ 
       new Background_get().execute("led1=0"); 
      } 
     } 
    }); 

} 
private class Background_get extends AsyncTask<String, Void, String> { 
    @Override 
    protected String doInBackground(String... params){ 
     try { 
      URL url = new URL("http://192.168.XXX.XXX/?" + params[0]); 
      HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 

      BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
      StringBuilder result = new StringBuilder(); 
      String inputLine; 
      while ((inputLine = in.readLine()) != null) 
       result.append(inputLine).append("\n"); 

      in.close(); 
      connection.disconnect(); 
      return result.toString(); 
     }catch (IOException e){ 
      e.printStackTrace(); 
     } 
     return null; 
    } 
} 

}

+0

電話機のブラウザや同じネットワーク上のコンピュータで 'http://192.168.XXX.XXX/?led1 = 1'を開くとどうなりますか?それでも問題が解決しない場合は、ネットワーク構成やラズベリーパイに問題があることを意味します。あなたのコードは大丈夫です。 – JonasCz

+0

どのような例外がありますか?あなたの電話ブラウザはそのページにアクセスできますか?あなたのコンピュータのブラウザはそれにアクセスできますか? – njzk2

+0

いいえブラウザ(電話とPC)のいずれのページにもアクセスできません。何が問題なのでしょうか? – Kush

答えて

0

私が通信するために、HTTPが、ソケットを使用することはありませんが。

したがって、Raspberry PIにServerSocket、AndroidにSocketを作成する必要があります。 あなただけのOracleソケットの例に従うことができます:https://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html

私はこのライブラリを自分で使用していると私はそれでとても幸せですhttp://pi4j.com/ の使用をお勧めしますのGPIOを制御します。

複数のクライアントを使用する場合は、whileループでSocket clientSocket = serverSocket.accept();を使用し、すべてのクライアントに対して新しいスレッドを開始する必要があります。

+0

これは質問に答えません。 – njzk2

関連する問題