コードを書いて
//MainActivity.java
package com.example.socksample01;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private TextView textView;
private AlertDialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button)findViewById(R.id.sampleButton);
btn.setOnClickListener((OnClickListener) this);
textView = (TextView)findViewById(R.id.textView1);
}
public void onClick(View v) {
// Toast.makeText(this, "ボタンが押されました", Toast.LENGTH_LONG).show();
EditText edit = (EditText)findViewById(R.id.edittext);
String text = edit.getText().toString();
Toast.makeText(this,text, Toast.LENGTH_LONG).show();
// dialog.show(); // ダイアログを表示
sockconnect();
}
//ソケットで接続する
private void sockconnect() {
Socket connection = null;
BufferedReader reader = null;
try {
// サーバーへ接続
connection = new Socket("192.168.0.5", 80); //LAN内のApacheへ接続
// メッセージ取得オブジェクトのインスタンス化
reader = new BufferedReader(new InputStreamReader(connection
.getInputStream()));
// サーバーからのメッセージを受信
String message = reader.readLine();
} catch (UnknownHostException e) {
e.printStackTrace();
textView.setText("エラー内容:" + e.toString());
Toast.makeText(this, "サーバーとの接続に失敗しました。",
Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
textView.setText("エラー内容:" + e.toString());
Toast.makeText(this, "サーバーとの接続に失敗しました。",
Toast.LENGTH_SHORT).show();
} finally {
try {
// 接続終了処理
reader.close();
connection.close();
} catch (IOException e) {
e.printStackTrace();
textView.setText("エラー内容:" + e.toString());
Toast.makeText(this, "サーバーとの接続に失敗しました。",
Toast.LENGTH_SHORT).show();
}
}
}
@Override
public boolean onTouchEvent(MotionEvent e) {
textView.setText( "X:" + e.getX() + "\nY:" + e.getY() );
switch (e.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.d("Sample", "ACTION_DOWN");
break;
case MotionEvent.ACTION_UP:
Log.d("Sample", "ACTION_UP");
break;
case MotionEvent.ACTION_MOVE:
Log.d("Sample", "ACTION_MOVE");
break;
}
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
//AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.socksample01"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.socksample01.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
[2013-02-16 16:14:16 - SockSample01] Failed to install SockSample01.apk on device 'emulator-5554!
[2013-02-16 16:14:16 - SockSample01] (null)
[2013-02-16 16:14:16 - SockSample01] Launch canceled!
インストールに失敗しているようなので、マニフェストファイルの書き方が間違っているのでしょうか?
強引にアプリを起動すると起動はできるのですが、ボタンをクリックした時にアプリが強制終了させられてしまいました
LAN内のApacheはブラウザでアクセスできるので問題ないと思います
ファイアウォールもエミュレータ上のブラウザが通信ができるので問題ないとおもいます
何がおかしいのでしょうか・・・・?