Bu bölümde, desteklenen her bağlam türünün mevcut durumunu almak için Snapshot API'nin nasıl kullanılacağı gösterilmektedir. Daha fazla bilgi için Başlangıç başlıklı makaleyi inceleyin. Desteği sonlandırılan içerik sinyalleri hakkında ayrıntılı bilgi için aşağıdaki genişletilebilir bildirimi açın:
Mevcut etkinliği alma
Kullanıcının mevcut etkinliğini almak için getDetectedActivity() yöntemini çağırın. Bu yöntem, kullanıcının en son etkinlikleri hakkında bilgi içeren bir ActivityRecognitionResult döndürür.
getDetectedActivity() yöntemi için com.google.android.gms.permission.ACTIVITY_RECOGNITION izni gerekir. Bu izni AndroidManifest.xml dosyasına ekleyin.
Kullanıcının mevcut etkinliğini almak için aşağıdaki adımları uygulayın:
SnapshotClientörneği oluşturmak içingetSnapshotClient()yöntemini çağırın.DetectedActivityResponsedinleyebilen birOnSuccessListeneroluşturmak içinaddOnSuccessListenerkullanın.- Sonucun geçerli olduğundan emin olmak için
getStatus()yöntemini çağırın. ActivityRecognitionResultiade etmek içinDetectedActivityResponse.getActivityRecognitionResult()numaralı telefonu arayın. Kullanıcının mevcut etkinliğinin birçok yönünü öğrenmek için bu API'yi kullanabilirsiniz. Örneğin:- Yalnızca en olası etkinliği almak için
getMostProbableActivity()yöntemini çağırın. - Olasılığa göre sıralanmış son etkinliklerin listesini almak için
getProbableActivities()yöntemini çağırın. - Belirli bir etkinlik türü için güven değerini döndürmek üzere
getActivityConfidence()yöntemini çağırın. - Bir
IntentöğesininActivityRecognitionResultiçerip içermediğini tespit etmek içinhasResult()yöntemini çağırın.
- Yalnızca en olası etkinliği almak için
Aşağıdaki kod örneğinde, algılanan en olası etkinliği almak ve sonucu konsola kaydetmek için getMostProbableActivity() kullanılmıştır:
Awareness.getSnapshotClient(this).getDetectedActivity()
.addOnSuccessListener(new OnSuccessListener<DetectedActivityResponse>() {
@Override
public void onSuccess(DetectedActivityResponse dar) {
ActivityRecognitionResult arr = dar.getActivityRecognitionResult();
DetectedActivity probableActivity = arr.getMostProbableActivity();
int confidence = probableActivity.getConfidence();
String activityStr = probableActivity.toString();
mLogFragment.getLogView().println("Activity: " + activityStr
+ ", Confidence: " + confidence + "/100");
}
})
Yakındaki işaretçileri alma
Yakındaki işaretçiler hakkında bilgi edinmek için getBeaconState() işlevini çağırın.
İşaretçi verileri; eklerin içeriği, türü ve ad alanından oluşur.
getBeaconState() yöntemi için android.permission.ACCESS_FINE_LOCATION izni gerekir. Bu izni AndroidManifest.xml uygulamasına ekleyin.
Ayrıca, Google Developers Console projeniz için Nearby Messages API'yi etkinleştirmeniz gerekir. Daha fazla bilgi için Signup and API Keys (Kaydolma ve API Anahtarları) ve Get started (Başlangıç) sayfalarını inceleyin.
Yakındaki işaretçiler hakkında bilgi edinmek için aşağıdaki adımları uygulayın:
Kullanıcının gerekli izinleri verip vermediğini kontrol edin. Aşağıdaki örnekte,
android.permission.ACCESS_FINE_LOCATIONizninin verilip verilmediği kontrol edilmektedir. Aksi takdirde kullanıcıdan izin istenir.if (ContextCompat.checkSelfPermission( MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions( MainActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSION_LOCATION ); return; }BeaconState.TypeFiltertanımlayın. Bu, yalnızca belirtilen ad alanı ve türle kayıtlı ekleri olan işaretçileri döndürür. Ek içeriğinde bayt bazında eşleşmeye göre de filtreleme yapabilirsiniz. Aşağıdaki örnekte, tür filtresinin nasıl oluşturulacağı gösterilmektedir:private static final List<BeaconState.TypeFilter> BEACON_TYPE_FILTERS = Arrays.asList( BeaconState.TypeFilter.with( "my.beacon.namespace", "my-attachment-type"), BeaconState.TypeFilter.with( "my.other.namespace", "my-attachment-type"));getSnapshotClient.getBeaconState()numaralı telefonu arayın.BeaconStateResponsedinleyebilen birOnSuccessListeneroluşturmak içinaddOnSuccessListenerkullanın.Sonucun geçerli olduğundan emin olmak için
getStatus()yöntemini çağırın.İşaretçi durumunu döndürmek için
BeaconStateResponse.getBeaconState()yöntemini çağırın.BeaconState.BeaconInfoalmak içinBeaconState.getBeaconInfo()numaralı telefonu arayın.
Aşağıdaki örnekte, işaretçi bilgilerinin nasıl alınacağı gösterilmektedir:
Awareness.getSnapshotClient(this).getBeaconState(BEACON_TYPE_FILTERS)
.addOnSuccessListener(new OnSuccessListener<BeaconStateResponse>() {
@Override
public void onSuccess(BeaconStateResponse beaconStateResponse) {
BeaconStateResult beaconStateResult = beaconStateResponse.getBeaconState();
BeaconState.BeaconInfo beaconInfo = beaconStateResponse.getBeaconInfo();
}
})
Kulaklık durumunu alma
Kulaklığın cihaza takılı olup olmadığını algılamak için getHeadphoneState() yöntemini çağırın. Bu yöntem, OnSuccessListener parametresi algılama olarak ayarlanmış bir HeadphoneStateResponse algılama durumu oluşturur.
Ardından HeadphoneState değerini almak için getHeadphoneState() yöntemini çağırabilirsiniz.
Mevcut kulaklık durumunu öğrenmek için aşağıdaki adımları uygulayın:
getSnapshotClient.getHeadphoneState()numaralı telefonu arayın.HeadphoneStateResponsedinleyebilen birOnSuccessListeneroluşturmak içinaddOnSuccessListenerkullanın.- Sonucun geçerli olduğundan emin olmak için
getStatus()yöntemini çağırın. - İşlem başarılı olursa kulaklık durumunu döndürmek için
HeadphoneStateResponse.getHeadphoneState()yöntemini çağırın. Bu değerPLUGGED_INveyaUNPLUGGEDolabilir.
Aşağıdaki kod örneğinde getHeadphoneState() öğesinin nasıl kullanılacağı gösterilmektedir:
Awareness.getSnapshotClient(this).getHeadphoneState()
.addOnSuccessListener(new OnSuccessListener<HeadphoneStateResponse>() {
@Override
public void onSuccess(HeadphoneStateResponse headphoneStateResponse) {
HeadphoneState headphoneState = headphoneStateResponse.getHeadphoneState();
boolean pluggedIn = headphoneState.getState() == HeadphoneState.PLUGGED_IN;
String stateStr =
"Headphones are " + (pluggedIn ? "plugged in" : "unplugged");
mLogFragment.getLogView().println(stateStr);
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e(TAG, "Could not get headphone state: " + e);
}
});
Konum alma
getLocation() işlevini çağırarak kullanıcının geçerli konumunu (enlem-boylam) alabilirsiniz. Bu işlev, LocationResponse döndürür.
Ardından, mevcut konum verilerini içeren bir Location almak için LocationResponse.getLocation() numarasını arayabilirsiniz.
getLocation() yöntemi için android.permission.ACCESS_FINE_LOCATION izni gerekir. Bu izni AndroidManifest.xml adlı uygulamaya ekleyin.
Mevcut konumu almak için aşağıdaki adımları uygulayın:
Kullanıcının gerekli izinleri verip vermediğini kontrol edin. Aşağıdaki örnekte,
android.permission.ACCESS_FINE_LOCATIONizninin verilip verilmediği kontrol edilmektedir. Aksi takdirde kullanıcıdan izin istenir.if (ContextCompat.checkSelfPermission( MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions( MainActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSION_LOCATION ); return; }getSnapshotClient.getLocation()numaralı telefonu arayın.LocationResponsedinleyebilen birOnSuccessListeneroluşturmak içinaddOnSuccessListenerkullanın.Sonucun geçerli olduğundan emin olmak için
getStatus()yöntemini çağırın.Mevcut
Locationdeğerini döndürmek içinLocationResponse.getLocation()işlevini çağırın.
Aşağıdaki örnekte, mevcut konumun nasıl alınacağı gösterilmektedir:
Awareness.getSnapshotClient(this).getLocation()
.addOnSuccessListener(new OnSuccessListener<LocationResponse>() {
@Override
public void onSuccess(LocationResponse locationResponse) {
Location loc = locationResponse.getLocationResult();
}
})