1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
package org.sidibe.location.gsmlocation;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.telephony.gsm.GsmCellLocation;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class LocationGsm extends Activity {
Button afficher= null;
int celid, lac;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
afficher= (Button)findViewById(R.id.afficher);
TelephonyManager telm= (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
loadparam(telm);
afficher.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Identifiant du cellule et lac fictive :
boolean etat=false;
int celidf=5496; int lacf=6037;
try{
etat=displayMap(celidf, lacf);
}
catch(Exception e)
{
}
}
});
}
public void loadparam(TelephonyManager telm)
{
GsmCellLocation location = (GsmCellLocation)telm.getCellLocation();
lac= location.getLac();
celid=location.getCid();
}
private boolean displayMap(int cellID, int lac) throws Exception
{
String urlString = "http://www.google.com/glm/mmap";
URL url = new URL(urlString);
URLConnection conn = url.openConnection();
HttpURLConnection httpConn = (HttpURLConnection) conn;
httpConn.setRequestMethod("POST");
httpConn.setDoOutput(true);
httpConn.setDoInput(true);
httpConn.connect();
OutputStream outputStream = httpConn.getOutputStream();
writeData(outputStream, cellID, lac);
InputStream inputStream = httpConn.getInputStream();
DataInputStream dataInputStream = new DataInputStream(inputStream);
dataInputStream.readShort();
dataInputStream.readByte();
int code = dataInputStream.readInt();
if (code == 0) {
double lat = (double) dataInputStream.readInt() / 1000000D;
double lng = (double) dataInputStream.readInt() / 1000000D;
dataInputStream.readInt();
dataInputStream.readInt();
dataInputStream.readUTF();
String uriString = "geo:" + lat + "," + lng;
Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse(uriString));
startActivity(intent);
return true;
}
else
{
return false;
}
}
private void writeData(OutputStream sorti, int celid, int lac)
{
DataOutputStream dataOutputStream = new DataOutputStream(sorti);
try {
dataOutputStream.writeShort(21);
dataOutputStream.writeLong(0);
dataOutputStream.writeUTF("fr");
dataOutputStream.writeUTF("Android");
dataOutputStream.writeUTF("1.6");
dataOutputStream.writeUTF("Web");
dataOutputStream.writeByte(27);
dataOutputStream.writeInt(0);
dataOutputStream.writeInt(0);
dataOutputStream.writeInt(3);
dataOutputStream.writeUTF("");
dataOutputStream.writeInt(celid);
dataOutputStream.writeInt(lac);
dataOutputStream.writeInt(0);
dataOutputStream.writeInt(0);
dataOutputStream.writeInt(0);
dataOutputStream.writeInt(0);
dataOutputStream.flush();
} catch (IOException e) {
}
}
} |
Partager