2012-03-29 20 views
2

家の中にいるときに人のGPS位置を取得する必要があります。家の中でAndroid GPSの場所を取得する方法

GPSは家の中では機能しませんが、AndroidでGPSが利用できるかどうかを最初に確認する必要があることを誰かから聞いたことがあります。そうでない場合は、近くのワイヤレスネットワークに基づいて人をローカライズすることです。

私はこれでかなり新しいです。私はチタンで簡単なアプリを開発する予定です。私の質問は: gpsが利用できない場合、無線ネットワークに基づいて誰かをローカライズできますか?建物内の人の位置を知ることはできますか?

+0

ほど正確ではないでしょうか?あなたは、誰かがどこにいるかを知る必要がありますか、あるいは誰かがどこにいるのかを足元に知る必要がありますか? – Brad

答えて

0

あなたは、私は、GPSが使用できない場合は、thisおよび関連stackoverflowのquestion

0

は良いスタートしているように見える参照して、セルID(携帯マスト)または無線ネットワークから位置を取得します、最高のプロバイダの場所のプロバイダに依頼このコードは役立つかもしれない願っています:

try { 
      gps_enabled = locManager.isProviderEnabled(LocationManager.GPS_PROVIDER); 
     } catch (Exception ex) { 
     } 
     try { 
      network_enabled = locManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); 
     } catch (Exception ex) { 
     } 

     // don't start listeners if no provider is enabled 
     if (!gps_enabled && !network_enabled) { 
      AlertDialog.Builder builder = new Builder(this); 
      builder.setTitle("Attention!"); 
      builder.setMessage("Sorry, location is not determined. Please enable location providers"); 
      builder.create().show(); 
     } 

     if (gps_enabled) { 
      locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locListener); 
     } 
     if (network_enabled) { 
      locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locListener); 
     } 

ここから:http://www.hrupin.com/2011/04/android-gps-using-how-to-get-current-location-example

0

1つのオプションは、スカイフックです。ここにSDKへのリンクがあります。それはアンドロイドに対応しています。これはGPSほど正確ではありませんが、ほとんどの場合、正しい建物の中にいます。

http://www.skyhookwireless.com/location-technology/sdk.php

0

あなたはセルIDの位置を取得したい、これまでセルID機能の下に呼び出すことができます。これは、なるように、この必要性をどのように正確なGPS

public void cellID() 
{ 
    TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 


    GsmCellLocation cellLocation = (GsmCellLocation) telephonyManager.getCellLocation();  
     int cid = cellLocation.getCid(); 
     int lac = cellLocation.getLac(); 
     SimpleDateFormat sdfDateTime = new SimpleDateFormat(
       "yyyy-MM-dd HH:mm:ss"); 
     datetimeCellID = sdfDateTime.format(new Date()); 
     String cell_Id=String.valueOf(cid); 
     String gsm_Loc_Area_Code=String.valueOf(lac); 
    // Toast.makeText(getBaseContext(),"cellid="+cell_Id+"\nGsm Location Area Code:"+gsm_Loc_Area_Code,Toast.LENGTH_LONG).show(); 

     if(RqsLocation(cid, lac)) 
     { 
      TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
      imeiCellID = tm.getDeviceId(); 
      latitude_cellID=String.valueOf((float)myLatitude/1000000); 
      longitude_cellID=String.valueOf((float)myLongitude/1000000); 
     // Toast.makeText(getBaseContext(),"Lat:"+latitude_cellID+"Long:"+longitude_cellID,Toast.LENGTH_LONG).show(); 


     }//if 
     else 
     { 
      Toast.makeText(getBaseContext(),"CellID : Can't find Location",Toast.LENGTH_LONG).show(); 
     }//else 
    } 

} //セルID

private Boolean RqsLocation(int cid, int lac) 
    { 
     //Toast.makeText(getBaseContext(),"inReqloc",Toast.LENGTH_LONG).show(); 
    Boolean result = false; 
    String urlmmap = "http://www.google.com/glm/mmap"; 

     try { 
      URL url = new URL(urlmmap); 
      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, cid, lac);  
      InputStream inputStream = httpConn.getInputStream(); 
      DataInputStream dataInputStream = new DataInputStream(inputStream); 
      dataInputStream.readShort(); 
      dataInputStream.readByte(); 
      int code = dataInputStream.readInt(); 
      if (code == 0) 
      { 
      myLatitude = dataInputStream.readInt(); 
      myLongitude = dataInputStream.readInt(); 
      result = true; 

      } 
     } catch (IOException e) 
      { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      } 

    return result; 

    } 

    private void WriteData(OutputStream out, int cid, int lac) 
    throws IOException 
    {  
     DataOutputStream dataOutputStream = new DataOutputStream(out); 
     dataOutputStream.writeShort(21); 
     dataOutputStream.writeLong(0); 
     dataOutputStream.writeUTF("en"); 
     dataOutputStream.writeUTF("Android"); 
     dataOutputStream.writeUTF("1.0"); 
     dataOutputStream.writeUTF("Web"); 
     dataOutputStream.writeByte(27); 
     dataOutputStream.writeInt(0); 
     dataOutputStream.writeInt(0); 
     dataOutputStream.writeInt(3); 
     dataOutputStream.writeUTF(""); 
     dataOutputStream.writeInt(cid); 
     dataOutputStream.writeInt(lac);  
     dataOutputStream.writeInt(0); 
     dataOutputStream.writeInt(0); 
     dataOutputStream.writeInt(0); 
     dataOutputStream.writeInt(0); 
     dataOutputStream.flush();  
    } 
関連する問題