私は今、この問題に一週間ほど苦労しています。これについて同様のトピックを検索していますが、それでも私の問題を解決できません。
問題は、Polar m600ウェアまたはウェアエミュレーター(Android V 7.1.1およびAPI25)でプログラムを実行しようとすると、「Google Play servicesサービスが古い。11011000が必要ですが、10289574が見つかりました」というメッセージが表示されることです。 。
Android開発者サイトの「Getting the the Last Known Location」の部分に従いました。 (サイトへのリンク https://developer.Android.com/training/location/retrieve-current.html#play-services )
ここに私が使用しているMainactivityコードがあります
public class MainActivity extends Activity {
private FusedLocationProviderClient mFusedLocationClient;
public Location mLastLocation;
private TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
@Override
public void onLayoutInflated(WatchViewStub stub) {
mTextView = (TextView) stub.findViewById(R.id.text);
}
});
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
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) {
return;
}
mFusedLocationClient.getLastLocation()
.addOnSuccessListener(this, new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
mLastLocation = location;
Log.d("Location is:",""+mLastLocation);
if (location != null) {
}
}
});
}
}
ここに私のmanifest.xmlがあります `
<uses-feature Android:name="Android.hardware.type.watch" />
<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />
<uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION" />
<application
Android:allowBackup="true"
Android:icon="@mipmap/ic_launcher"
Android:label="@string/app_name"
Android:supportsRtl="true"
Android:theme="@Android:style/Theme.DeviceDefault">
<meta-data Android:name="com.google.Android.gms.version"
Android:value="@integer/google_play_services_version" />
<activity
Android:name=".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>
そして最後になりましたが、私のbuild.gradle
Android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "ims.fhj.at.testnavigators"
minSdkVersion 21
targetSdkVersion 25
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.Android.support:wearable:2.0.3'
compile 'com.google.Android.gms:play-services-wearable:11.0.1'
compile 'com.google.Android.gms:play-services:11.0.1'}
ウェアラブルgradleファイルのAPIをダウングレードする必要があります。
問題は、デバイスに最新のGoogle Play Servicesアプリケーションがないことです。
これを修正するには、これに変更します。
compile 'com.google.Android.gms:play-services-wearable:10.0.0'
compile 'com.google.Android.gms:play-services:10.0.0'
私の解決策は非常に奇妙です:Goto Settings-> Apps-> System Apps-> Google Play Store私のバージョンは10xxxxxでしたが、起動時に時計が更新されたため奇妙です。そこで、[更新の削除]をクリックして、バージョンを11xxxxxxに変更しました。
ここでの問題は、エミュレーターとgradleファイルのGoogle Playサービス(バージョン)の不一致です。
次の2つの方法で解決できます。
gradle
ファイルのGoogle Play Servicesのバージョン(バージョン)をエミュレータのGoogle Play Services(バージョン)にダウングレードして、不一致を削除します。
エミュレータのGoogle Play Servicesをアップグレードします。
Stringが書いたように、Playサービスはデバイス上で更新されません。残念ながら、WearOSの世界では、Playサービスが最新のものである可能性がありますが、ウェアラブルでは利用できません。その場合、次の方法を使用して対応できます。
GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance();
int result = apiAvailability.isGooglePlayServicesAvailable(this);
if (result != ConnectionResult.SUCCESS) {
...
} else {
apiAvailability.getErrorDialog(this, result, REQUEST_CODE,this).show();
}
これは何年もの間、Wearの継続的な問題でした(たとえば Android Wear Google Play Services を参照)。
最善の解決策は、最新のPlay Servicesリリースを使用しないことです。 1つのオプションは、対象の実稼働デバイスをカバーしていると思われる最小バージョンを見つけることです。あなたの場合、これは10.2の範囲にあるように聞こえます。または、必要なすべての機能を含む最も低いリリースを選択します(私は個人的に9.8.0を使用しています)。
参照用に、Playサービスのリリース履歴を以下に示します。 https://developers.google.com/Android/guides/releases
エミュレータが使用しているイメージのGoogle Play ServicesとAPIをアップグレードする必要があります。この答えをチェックして、私のために解決しました(Android Studio 3.1): https://stackoverflow.com/a/49751932/2292056