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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

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

Android Studio

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

Q&A

解決済

1回答

2074閲覧

androidソケット通信について

snowdropAPP

総合スコア41

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

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

Android Studio

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

0グッド

0クリップ

投稿2020/07/06 02:43

前提・実現したいこと

今android studioを使ってアンドロイドエミュレーター仮想デバイスを使用してPCとソケット通信を行いたいと思っています。

発生している問題・エラーメッセージ

AndroidプログラミングバイブルSDK7の布留川栄一さん著書の本を読んでソケット通信のページがあったのでとりあえず記述してみました。
私の考えではコピペしているのでエラーは出ないと思っていたのですがコードの記述ミスかSDKが間違っているのか何が違うのかわかりませんがコードのいたるところに赤波線と赤文字が表示されます。
本に書いていることをそのまま記述してエラーっていうのはほかの設定が間違っているから?

エラーの出ている箇所はコードのほうで記述しようと思うので何が違うか教えてください。
当方かなりの初心者なのでお手柔らかにお願いします。

該当のソースコード

Java

1package net.npaka.socketex; 2import android.app.Activity; 3import android.graphics.Color; 4import android.os.AsyncTask; 5import android.os.Bundle; 6import android.os.Handler; 7import android.view.View; 8import android.view.ViewGroup; 9import android.view.Window; 10import android.widget.Button; 11import android.widget.EditText; 12import android.widget.LinearLayout; 13import android.widget.TextView; 14import java.io.InputStream; //エラー①InputStreamが赤文字 15import java.io.OutputStream; 16import java.net.Socket; 17 18 19//ソケット通信 20public class SocketEX extends Activity 21 implements View.OnClickListener { 22 private final static String BR = System.getProperty("line.separator"); 23 private final static int WC = ViewGroup.LayoutParams.WRAP_CONTENT; 24 private final static int MP = ViewGroup.LayoutParams.MATCH_PARENT; 25 26 //IPアドレスの指定 27 private final static String IP = "入力済み"; 28 29 private TextView lblReceive; 30 private EditText edtSend; 31 private Button btnSend; 32 33 private Socket socket; 34 private java.io.InputStream in; //エラー②InputStreamが赤文字 35 private OutputStream out; 36 private boolean error; 37 38 private final Handler handler = new Handler(); 39 40 @Override 41 public void onCreate(Bundle bundle) { 42 super.onCreate(bundle); 43 requestWindowFeature(Window.FEATURE_NO_TITLE); 44 //LAYOUTの作成 45 LinearLayout layout = new LinearLayout(this); 46 layout.setBackgroundColor(Color.WHITE); 47 layout.setOrientation(LinearLayout.VERTICAL); 48 setContentView(layout); 49 50 //送信エディットテキストの生成 51 edtSend = new EditText(this); 52 edtSend.setText(""); 53 edtSend.setLayoutParams(new LinearLayout.LayoutParams(MP, WC)); 54 layout.addView(edtSend); 55 56 //送信ボタンの作成 57 btnSend = new Button(this); 58 btnSend.setText("送信"); 59 btnSend.setOnClickListener(this); 60 btnSend.setLayoutParams(new LinearLayout.LayoutParams(WC, WC)); 61 62 //受信ラベルの作成 63 lblReceive = new TextView(this); 64 lblReceive.setText(""); 65 lblReceive.setTextSize(16.0f); 66 lblReceive.setTextColor(Color.BLACK); 67 lblReceive.setLayoutParams(new LinearLayout.LayoutParams(MP, WC)); 68 layout.addView(lblReceive); 69 } 70 71 //アクティビティ開始時に呼ばれる 72 @Override 73 public void onStart() { 74 super.onStart(); 75 76 //スレッドの作成 77 Thread thread = new Thread() { 78 public void run() { 79 try { 80 connect(IP, 8081); 81 } catch (Exception e) { 82 } 83 84 } 85 }; 86 thread.start(); 87 } 88 //アクティビティ停止時に呼ばれる 89 @Override 90 public void onStop(){ 91 super.onStop(); 92 disconnect(); 93 } 94 private void addText(final String text) { 95 //ハンドラの生成 96 handler.post(new Runnable() { //エラー③Runnableに赤波線 97 public void run() { 98 lblReceive.setText(text + BR + lblReceive.getText()); 99 } 100 }); 101 } 102 //接続 103 private void connect(String ip, int port) { 104 int size; 105 String str; 106 byte[] w = new byte[1024]; 107 try { 108 //ソケット通信 109 addText("接続中"); 110 socket = new Socket(ip, port); //エラー④Socketに赤波線 111 in = socket.getInputStream(); 112 out = socket.getOutputStream(); 113 addText("接続完了"); 114 115 //受信ループ 116 while (socket != null && socket.isConnected()) { 117 //データの受信 118 size = in.read(w); //エラー⑤readが赤文字 119 if (size <= 0) continue; 120 str = new String(w, 0, size, "UTF-8"); //エラー⑥Stringに赤波線 121 addText(str); 122 } 123 } catch (Exception e) { 124 addText("通信に失敗しました"); 125 } 126 } 127 //切断 128 private void disconnect(){ 129 try { 130 socket.close(); 131 socket = null; 132 }catch (Exception e){ 133 } 134 } 135 136 //ボタンをクリックしたときの処理 137 public void onClick(View v){ 138 //スレッドの生成 139 Thread thread = new Thread(new Runnable(){public void run(){ 140 error = false; 141 try { 142 //データの送信 143 if(socket != null && socket.isConnected()){ 144 byte[] w = edtSend.getText().toString().getBytes("UTF8"); //getBytesに赤波線 145 out.write(w); 146 out.flush(); 147 } 148 } 149 catch (Exception e){ 150 error = true; 151 } 152 //ハンドラの生成 153 handler.post(new Runnable(){public void run(){ //エラー⑧Runnable に赤波線 154 if(!error) { 155 edtSend.setText(""); 156 }else{ 157 addText("通信失敗しました"); 158 } 159 }}); 160 }}); 161 thread.start(); 162 } 163}

試したこと

コンテキストアクションにて表示されることを試したり、エクリプス(テキストエディタ)に張り付けてみたり、、、
ちなみにIPは入力してます
マニフェストファイルにパーミッションの追加もしています
InputStreamをInoutStreamReaderにしたり、、、

補足情報(FW/ツールのバージョンなど)

仮想デバイスの情報
Pixel 3a
レゾリューション 1080*2220
API 30
ターゲット Android 10.0+
CPU/ABI  x86

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

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

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

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

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

y_waiwai

2020/07/06 03:00

エラーが出るならエラーメッセージをそのままコピペで提示しましょう
snowdropAPP

2020/07/06 04:14

ログキャットを見てみると何も表示されておりません エラーというよりコンパイルが通らない状態になっています
guest

回答1

0

自己解決

解決いたしました
どうやらマニフェストファイルにてデフォルトのアクティビティが見つからなかったようで正しくアクテビティを設定したところ解決いたしました

投稿2020/07/06 05:14

snowdropAPP

総合スコア41

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問