2013-02-09 38 views
6

Tôi hiện đang thử nghiệm địa điểm gps trong Android (với Công cụ SDK rev 21.0.1 Tôi đã thử các thủ tục tiêu chuẩn:android sửa chữa giả lập địa là không có khả năng thiết lập gps vị trí

  1. Tạo một giả lập với GPS được kích hoạt (thử nhiều phiên bản, 2,1-4,2)
  2. Khởi động giả lập
  3. telnet localhost: 5554
  4. Loại geo sửa chữa dài lat

Về lý thuyết, điều này nên đặt gps.

Nhưng những dấu hiệu sau đây chỉ ra vị trí không được thiết lập đúng cách:

1. Khi tôi đi đến maps.google.com hoặc bản đồ mở Google, nó luôn luôn phàn nàn rằng không thể quyết định vị trí của tôi và họ luôn hỏi tôi để bật wifi.

2. GPS dường như không bao giờ được kích hoạt - không có biểu tượng trên thanh trạng thái.

Ngoài ra, tôi đã thử DDMS (không được dùng nữa và tất nhiên tôi cũng đã thử Màn hình). Không có gì xảy ra.

tôi đã đi liên kết trước đó chỉ ở đây: Location not being updated on new geo fix in android emulator

Android - Unable to get the gps location on the emulator

GPS on emulator doesn't get the geo fix - Android

Nhưng tất cả các liên kết này dường như không giúp đỡ. Có một số báo cáo lỗi trên trang dự án android: http://code.google.com/p/android/issues/detail?id=13046

nhưng đó là một vấn đề khá cũ và không có giải pháp cuối cùng.

Tôi tự hỏi liệu có ai khác đã gặp sự cố tương tự và vui lòng cung cấp trợ giúp nào đó không. Cảm ơn.

+0

Tôi hoàn toàn có thể xác nhận điều đó. Nó không hoạt động. Thật thú vị nếu tôi thiết lập một AVD với Android 2.1 (hoặc cái gì đó rất cũ) nó hoạt động như một nét duyên dáng: geo sửa chữa lat dài và vị trí được hiển thị ngay lập tức trong ứng dụng Google Maps ... – decades

Trả lời

1

hy vọng Bạn sẽ thấy biểu tượng và nó sẽ hoạt động. API Cấp 10

package com.example.locationsddf; 

import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

    LocationManager lm; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     final TextView tv = (TextView) findViewById(R.id.tv); 
     lm = (LocationManager) getSystemService(LOCATION_SERVICE); 
     lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() { 

      @Override 
      public void onStatusChanged(String arg0, int arg1, Bundle arg2) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onProviderEnabled(String arg0) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onProviderDisabled(String arg0) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onLocationChanged(Location arg0) { 
       tv.setText("Latitude: "+arg0.getLatitude()+" \nLongitude: "+arg0.getLongitude()); 

      } 
     }); 
    } 

    @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; 
    } 

} 

manifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.locationsddf" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="5" 
     android:targetSdkVersion="10" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.locationsddf.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> 

Khi biểu tượng được thông báo thì bạn có thể chỉ đơn giản là có được vị trí của lm.getLastKnowLocation nó sẽ làm việc

+0

Tôi chỉ cần theo mã của bạn và tôi có thể xác nhận rằng sự kiện onLocationChanged đã bị sa thải và các địa điểm đã được nhận. Tuy nhiên, tại sao đối với các ứng dụng như bản đồ của Google, chúng có phản ứng với thay đổi vị trí GPS và vẫn hiển thị các thông báo như "không thể quyết định vị trí của bạn" không? – kkspeed

+0

Nếu đó là ans bạn có thể đánh dấu bài viết của tôi là Ans bằng cách đánh dấu vào góc trên bên trái của bài viết của tôi. bạn có thể đăng thông tin 'Logcat' của mình không? –

0

Đôi khi có những vấn đề với AVD riêng của mình. Thử chuyển sang cấu trúc CPU khác. Tôi đã có vấn đề tương tự và đã được giải quyết bằng cách chuyển đổi giữa ARM và Intel. Đôi khi AVD với dịch vụ của Google cũng cho phép giúp

Cũng chơi xung quanh với "Allow Locations Mock" trong tùy chọn nhà phát triển

Là một thay thế, bạn có thể thử khách hàng này: https://github.com/RomanTheLegend/Pokemon_NoGo/tree/master/Sources/PokemonNoGo Tôi đã viết nó để chơi Pokemon, nhưng nó làm việc với bất kỳ ứng dụng dựa trên GPS nào. Tất cả những gì nó làm là chấp nhận tọa độ từ máy trạm để bàn và hệ thống chính của nhà cung cấp GPS - LocationManager.GPS_PROVIDER

Cuối cùng nhưng không kém phần quan trọng: trong AVD bạn có thể phát lại tệp .kml. Có rất nhiều dịch vụ có thể giúp bạn tạo ra một dịch vụ. Hoặc chỉ cần cài đặt "Lockito" và tạo tọa độ giả từ Android

Các vấn đề liên quan