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

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

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

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

Android

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

解決済

Android アプリ 実行エラー

kt3302y
kt3302y

総合スコア27

Java

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

Android

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

2回答

0リアクション

0クリップ

3144閲覧

投稿2016/01/10 02:38

編集2016/01/14 03:25

Android Studioを使用してチャットクライアントアプリを作成しています.
使用としてはサーバーのIPアドレスとポート番号を入力してConnectボタンをクリックするとサーバーに接続とチャット受信を行い,送信ボタンはテキストに入力されたメッセージをサーバーに送信する役割を担っています.
メッセージを送信できない問題が発生しました.

これは何が原因で起こっているものなのでしょうか
教えてください.
参考までにソースコードなども載せておきます.

MainActivity.java

import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.view.Menu; import android.view.MenuItem; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity implements ChatConnectTask.ChatConnectTaskCallback,ChatSendTask.ChatSendTaskCallback{ private ChatConnectTask connectTask; private ChatSendTask sendTask; private EditText inputIP; private EditText inputPort; private EditText inputMessage; private TextView viewChat; private Button buttonConnect; private Button buttonSend; private String param1; private int param2; private String param3; private View view; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); inputIP = (EditText)findViewById(R.id.inputIP); inputPort = (EditText)findViewById(R.id.inputPort); inputMessage = (EditText)findViewById(R.id.inputMessage); buttonConnect = (Button)findViewById(R.id.buttonConnect); buttonSend = (Button)findViewById(R.id.buttonSend); viewChat = (TextView)findViewById(R.id.viewChat); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); } //connectボタンでソケット接続&メッセージ受信 public void handleButtonConnectAction(View view){ String param1 = inputIP.getText().toString(); int param2 = Integer.parseInt(inputPort.getText().toString()); Param param = new Param(param1,param2); connectTask = new ChatConnectTask(this); connectTask.execute(param); } //送信ボタンでメッセージを送信 public void handleButtonSendAction(View view){ param3 = inputMessage.getText().toString(); Param param = new Param(param1,param2,param3); sendTask = new ChatSendTask(this); sendTask.execute(param); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } @Override public void onPreExecute() { } @Override public void onProgressUpdate(String... message) { viewChat.setText(message[0].toString()); } @Override public void onPostExecute(String result) { Toast.makeText(this,result,Toast.LENGTH_LONG); } }

ChatConnectTask.java

import android.os.AsyncTask; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetSocketAddress; import java.net.Socket; /** */ public class ChatConnectTask extends AsyncTask<Param,String,String > { private ChatConnectTaskCallback mCallback; private Param param = new Param(); public ChatConnectTask(ChatConnectTaskCallback callback){ this.mCallback = callback; } @Override protected void onPreExecute(){ if(mCallback != null) mCallback.onPreExecute(); } protected String doInBackground(Param... param){ String server = param[0].param1; // Server Portからポート番号を取得 int port = param[0].param2; Socket socket = null; try { // ソケットを作成 socket = new Socket(); // 指定されたホスト名(IPアドレス)とポート番号でサーバに接続する socket.connect(new InetSocketAddress(server, port)); while(socket != null) { // 接続されたソケットの入力ストリームを取得し,データ入力ストリームを連結 InputStream is = socket.getInputStream(); DataInputStream dis = new DataInputStream(is); // データの受信 String receiveMessage = dis.readUTF(); //受信したデータに改行をつけてメッセージを追加していく String showMessage = receiveMessage + "\r\n"; // 受信したデータを表示 publishProgress(showMessage); } } catch (Exception e) { e.printStackTrace(); } finally { // ソケットをクローズする if (socket != null) { try { socket.close(); } catch (IOException e) {} } } return "チャットを終了します"; } @Override protected void onProgressUpdate(String... message){ if(mCallback != null) mCallback.onProgressUpdate(message); } @Override protected void onPostExecute(String result ){ if(mCallback != null) { mCallback.onPostExecute(result); } } public interface ChatConnectTaskCallback{ void onPreExecute(); void onProgressUpdate(String... message); void onPostExecute(String result); } }

ChatSendTask.java

package jp.ac.id140441007_meijo_u.task81; import android.os.AsyncTask; import java.io.DataOutputStream; import java.io.IOException; import java.io.OutputStream; import java.net.InetSocketAddress; import java.net.Socket; /** * Created by 大嗣 on 2016/01/07. */ public class ChatSendTask extends AsyncTask<Param,String,String > { private ChatSendTaskCallback mCallback; private Param param = new Param(); public ChatSendTask(ChatSendTaskCallback callback){ this.mCallback = callback; } @Override protected void onPreExecute(){ if(mCallback != null) mCallback.onPreExecute(); } protected String doInBackground(Param... param){ String server = param[0].param1; // Server Portからポート番号を取得 int port = param[0].param2; Socket socket = null; try { // 指定されたホスト名(IPアドレス)とポート番号でサーバに接続する socket.connect(new InetSocketAddress(server, port)); // 接続されたソケットの入力ストリームを取得し,データ入力ストリームを連結 OutputStream os = socket.getOutputStream(); DataOutputStream dos = new DataOutputStream(os); // テキストフィールドの文字を取得 String sendMessage = param[0].param3; dos.write(sendMessage.getBytes()); dos.flush(); } catch (Exception e) { e.printStackTrace(); } finally { // ソケットをクローズする if (socket != null) { try { socket.close(); } catch (IOException e) {} } } return "メッセージを送信しました"; } @Override protected void onProgressUpdate(String... message){ if(mCallback != null) mCallback.onProgressUpdate(message); } @Override protected void onPostExecute(String result){ if(mCallback != null) { mCallback.onPostExecute(result); } } public interface ChatSendTaskCallback{ void onPreExecute(); void onProgressUpdate(String... message); void onPostExecute(String result); } }

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

swordone

2016/01/10 03:13 編集

デバッグで実行しているならエラーメッセージがLogcatに出ているはずですので、それを貼ってください。
kt3302y

2016/01/11 07:44

載せたかったのですが文字数制限のため,載せることができませんでした. ayumuさんのコメント返信に投稿しましたので,よろしくお願いします

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java

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

Android

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