-
-
Save komamitsu/1893396 to your computer and use it in GitHub Desktop.
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> | |
<uses-permission android:name="android.permission.INTERNET"></uses-permission> |
package com.komamitsu; | |
import java.io.IOException; | |
import java.util.Map.Entry; | |
import java.util.Properties; | |
import android.app.Activity; | |
import android.net.wifi.WifiManager; | |
import android.os.Bundle; | |
import android.os.Handler; | |
import android.widget.TextView; | |
public class AndroidWebServerActivity extends Activity { | |
private static final int PORT = 8765; | |
private TextView hello; | |
private MyHTTPD server; | |
private Handler handler = new Handler(); | |
@Override | |
public void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.main); | |
hello = (TextView) findViewById(R.id.hello); | |
} | |
@Override | |
protected void onResume() { | |
super.onResume(); | |
TextView textIpaddr = (TextView) findViewById(R.id.ipaddr); | |
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); | |
int ipAddress = wifiManager.getConnectionInfo().getIpAddress(); | |
final String formatedIpAddress = String.format("%d.%d.%d.%d", (ipAddress & 0xff), (ipAddress >> 8 & 0xff), | |
(ipAddress >> 16 & 0xff), (ipAddress >> 24 & 0xff)); | |
textIpaddr.setText("Please access! http://" + formatedIpAddress + ":" + PORT); | |
try { | |
server = new MyHTTPD(); | |
} catch (IOException e) { | |
e.printStackTrace(); | |
} | |
} | |
@Override | |
protected void onPause() { | |
super.onPause(); | |
if (server != null) | |
server.stop(); | |
} | |
private class MyHTTPD extends NanoHTTPD { | |
public MyHTTPD() throws IOException { | |
super(PORT, null); | |
} | |
@Override | |
public Response serve(String uri, String method, Properties header, Properties parms, Properties files) { | |
final StringBuilder buf = new StringBuilder(); | |
for (Entry<Object, Object> kv : header.entrySet()) | |
buf.append(kv.getKey() + " : " + kv.getValue() + "\n"); | |
handler.post(new Runnable() { | |
@Override | |
public void run() { | |
hello.setText(buf); | |
} | |
}); | |
final String html = "<html><head><head><body><h1>Hello, World</h1></body></html>"; | |
return new NanoHTTPD.Response(HTTP_OK, MIME_HTML, html); | |
} | |
} | |
} |
<?xml version="1.0" encoding="utf-8"?> | |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |
android:orientation="vertical" | |
android:layout_width="fill_parent" | |
android:layout_height="fill_parent" | |
> | |
<TextView | |
android:id="@+id/ipaddr" | |
android:layout_width="fill_parent" | |
android:layout_height="wrap_content" | |
android:paddingBottom="40dp" | |
/> | |
<TextView | |
android:id="@+id/hello" | |
android:layout_width="fill_parent" | |
android:layout_height="wrap_content" | |
android:text="@string/hello" | |
/> | |
</LinearLayout> |
<?xml version="1.0" encoding="utf-8"?> | |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |
android:orientation="vertical" | |
android:layout_width="fill_parent" | |
android:layout_height="fill_parent" | |
> | |
<TextView | |
android:id="@+id/ipaddr" | |
android:layout_width="fill_parent" | |
android:layout_height="wrap_content" | |
android:paddingBottom="40dp" | |
/> | |
<TextView | |
android:id="@+id/hello" | |
android:layout_width="fill_parent" | |
android:layout_height="wrap_content" | |
android:text="@string/hello" | |
/> | |
</LinearLayout> |
I used the code snippet :
public String getLocalIpAddress() {
try {
for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {
return inetAddress.getHostAddress().toString();
}
}
}
} catch (SocketException ex) {
Log.e("Exception", ex.toString());
}
return null;
}
As I was getting the IP address as 0.
It seems that's a server.Start() is missing. I put that line after creating the MyHTTPD server variable.
the server.Start() is missing. http://stackoverflow.com/questions/16560285/how-to-create-nanohttpd-server-in-android
Thanks for this example! The IP reported was 0.0.0.0. I had to use 127.0.0.1 to reach the server.
I wish to make an app that can control all the phones features using a web server. For example I wish to turn on the flash light by clicking a button on the webpage server by nanohttpd. How can this be accompilished?
@aswinpj Could you able to make that? In my case server is killed by Android OS after a while.
how can i upload file with nanoHttp? in android ?
Hi, When I tried using this code, I got the IP address as 10.0.2.15. The emulator says, WebPage not available. Can you please help me in this regard?