2017-07-12 2 views
2

ジオフェンシング用のアンドロイドアプリケーションを開発しており、Googleマップv2を使用して地図を読み込みます。私が直面している問題は、3Gまたは4Gネットワ​​ーク接続を使用して地図を初期化するときに空白の画面が表示されることです。 WIFIで初期化している間にアプリケーションが応答しなくなると、マップは何も何も何もせずに初期化されます。 私は私が Androidのgoogle maps v2がモバイルインターネット(3gまたは4g)で動作していませんが、Wi-Fiで動作しています

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

    <uses-feature android:name="android.hardware.location.gps" /> 
    <uses-permission android:name="android.permission.CALL_PHONE" /> 

    <uses-permission android:name="android.permission.CALL_PHONE" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

    <uses-permission android:name="android.permission.SEND_SMS"/> 

    <uses-permission android:name="android.permission.RECEIVE_SMS"/> 

マニフェストファイルに

を与えている権限は、誰もがこのような問題に直面している

GoogleMap mMap; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     try { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_maps); 
      StrictMode.ThreadPolicy policy = new 
        StrictMode.ThreadPolicy.Builder() 
        .permitAll().build(); 
      StrictMode.setThreadPolicy(policy); 
      queue = Volley.newRequestQueue(getApplicationContext()); 
      pref = getPreferences(Context.MODE_PRIVATE); 

      //db MANAGER 
      dbManager = new DBManager(this); 
      dbManager.open(); 

      InitializeClient(); 
      InitializeDB(); 



     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     mqtt=new MQTT(); 
     try{ 
      if(ip==null){ 
       System.out.println("Mqtt Initialized in Maps Activity"); 
       ip="demo.aiotm.in:1883"; 
      } 
      //mqtt.setHost("tcp://"+ip); 
      mqtt.setHost("tcp://10.30.60.242:1883"); 
      connection = mqtt.blockingConnection(); 
      connection.connect(); 
     }catch (Exception e){ 
      e.printStackTrace(); 

     } 

    } 

    private void InitializeClient() { 
     try { 
if (mMap==null){ 
    // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 

    //Initializing googleApiClient 
    googleApiClient = new GoogleApiClient.Builder(this) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .addApi(LocationServices.API) 
      .build(); 
    googleApiClient.connect(); 

    if (mMap==null){ 
     Toast.makeText(getApplicationContext(),"Sorry Unable to create maps",Toast.LENGTH_SHORT).show(); 
    } 
} 
     }catch (Exception e){e.printStackTrace();} 




     if (this.mMap != null) { 

      if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
       // TODO: Consider calling 
       // ActivityCompat#requestPermissions 
       // here to request the missing permissions, and then overriding 
       // public void onRequestPermissionsResult(int requestCode, String[] permissions, 
       //           int[] grantResults) 
       // to handle the case where the user grants the permission. See the documentation 
       // for ActivityCompat#requestPermissions for more details. 
       return; 
      }else { 
       System.out.println(":::::::::::::::::::::::::::::::::: Map Not Initialized :::::::::::::::::::::::::::::::::::::::::;");} 
      mMap.setMyLocationEnabled(true); 


     } 
     if (googleApiClient.isConnected()||googleApiClient.isConnecting()){System.out.println("------------------------------------>Api is connecting<-----------------------------------");} 


    } 
@Override 
    protected void onResume() { 
     super.onResume(); 
     InitializeClient(); 
     getCurrentLocation(); 


    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 


    } 

以下のコードを埋め込むのでしょうか?解決策があれば教えてください!

答えて

0

私は問題はマップの初期化だとは思わないが、あなたがここにメインスレッド

mqtt = new MQTT(); 
try { 
    if (ip == null) { 
     System.out.println("Mqtt Initialized in Maps Activity"); 
     ip = "demo.aiotm.in:1883"; 
    } 
    //mqtt.setHost("tcp://"+ip); 
    mqtt.setHost("tcp://10.30.60.242:1883"); 
    connection = mqtt.blockingConnection(); 
    connection.connect(); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

そしておそらく、このアドレスtcp://10.30.60.242:1883の接続を行っているようですので、あなたの内部のWiFiネットワークでのみ到達可能です携帯電話のデータ接続でテストするときにタイムアウトしてコールgoeas

+0

ヤ...私はとても遅かった...それは問題だった.. !! –

関連する問題