質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

1348閲覧

android のバックグランドでURLを開く

退会済みユーザー

退会済みユーザー

総合スコア0

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2017/11/17 03:54

編集2017/11/18 07:12

ここで教わった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で開くとうまくいきました。何か違いがあるのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

mikufuzitaさん、

androidのブラウザでhttp://raspberrypi.local:8080/onを開こうとすると開けず

とのことなので、名前の解決(raspiberrypi.local という名前から、IPアドレスを求める)ができていないのではないでしょうか?
ラズパイで、ip a とタイプして、IPアドレスを確認して、直接 URL(例: http://192.168.0.22:8080/on)と入れてみて、どうなるでしょうか。

Androidは、詳しくないのでわかりませんが、おそらく、Mac や、iPhoneとちがって、Androidは、bonjour(zeroconf) というのに対応していないのではないでしょうか。
ちなみに、Linux(らずぱい)では、Avahiというソフトで、Zeroconf対応しています。

投稿2017/11/18 06:43

mt08

総合スコア1825

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/11/18 07:10

ありがとうございます。無事LED を点灯することができました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問