ここで教わったnode.jsを使ってラズパイに繋がっているLEDを光らせる方法を発展させて、androidstudioでボタンを押した時にバックグランドでURLを開いてLEDを光らせることはできますか?
###MainActivity.java
java
1package com.example.xxx.http; 2 3import android.os.AsyncTask; 4 5import java.io.BufferedReader; 6import java.io.IOException; 7import java.io.InputStream; 8import java.io.InputStreamReader; 9import java.net.HttpURLConnection; 10import java.net.URL; 11 12 13public class HttpTask extends AsyncTask<Void,Void,Void> { 14 @Override 15 protected Void doInBackground(Void... params) { 16 try { 17 getGET(); 18 } catch (IOException e) { 19 e.printStackTrace(); 20 } 21 return null; 22 } 23 24 public String getGET() throws IOException { 25 final int CONNECTION_TIMEOUT = 30 * 1000; 26 final int READ_TIMEOUT = 30 * 1000; 27 28 URL url = new URL("http://XX.X.XX.XX:8080/on");//url設定 29 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 30 //URL が参照するリモートオブジェクトへの接続を表す URLConnection オブジェクトを返します。 31 conn.setConnectTimeout(CONNECTION_TIMEOUT); 32 // この URLConnection が参照するリソースへの通信リンクのオープン時に、指定されたミリ秒単位のタイムアウト値が使用されるように設定します。 33 conn.setReadTimeout(READ_TIMEOUT); 34 // 指定されたタイムアウトまでの読み取りタイムアウトをミリ秒単位で設定します 35 conn.setRequestMethod("GET"); 36 conn.connect();// この URL が参照するリソースへの通信リンクを確立します 37 int statusCode = conn.getResponseCode();// HTTP 応答メッセージから状態コードを取得します 38 39 if(statusCode == HttpURLConnection.HTTP_OK){//上のコードがOKだった時 40 StringBuilder result = null; 41 //responseの読み込み 42 final InputStream in = conn.getInputStream();//この接続からの入力を受け取る入力ストリームを返します。 43 final String encoding = conn.getContentEncoding();// ヘッダフィールドの値を返します。 44 final InputStreamReader inReader = new InputStreamReader(in, encoding); 45 final BufferedReader bufferedReader = new BufferedReader(inReader); 46 String line = null; 47 while((line = bufferedReader.readLine()) != null) { 48 result.append(line); 49 } 50 bufferedReader.close(); 51 //ストリームを閉じて、それに関連するすべてのシステムリソースを解放します。 52 inReader.close(); 53 in.close(); 54 return result.toString();//このシーケンスのデータを表現する文字列を返します。 55 } 56 return null; 57 } 58} 59
###HttpTask.java
java
1package com.example.xxx.http; 2 3import android.os.Bundle; 4import android.view.View; 5import android.support.v7.app.AppCompatActivity; 6import android.widget.Button; 7import android.widget.EditText; 8 9public class MainActivity extends AppCompatActivity { 10 11 Button buttonGet; 12 13 @Override 14 protected void onCreate(Bundle savedInstanceState) { 15 super.onCreate(savedInstanceState); 16 setContentView(R.layout.activity_main); 17 18 buttonGet = (Button) findViewById(R.id.buttonGet); 19 buttonGet.setOnClickListener(new View.OnClickListener() { 20 @Override 21 public void onClick(View v) { 22 HttpTask httpTask = new HttpTask(); 23 httpTask.execute(); 24 } 25 }); 26 27 } 28}
というコードを書いて見ましたがボタンを押しても変化がありませんでした。
試しにandroidのブラウザでhttp://raspberrypi.local:8080/onを開こうとすると開けず、パソコン、iPhoneで開くとうまくいきました。何か違いがあるのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/11/18 07:10