Bu bölümde, desteklenen bağlam türlerinin her birinin mevcut durumunu almak için Snapshot API'nin nasıl kullanılacağı gösterilmektedir. Daha fazla bilgi için Başlangıç bölümüne bakın. Kullanımdan kaldırılan içerik sinyalleriyle ilgili ayrıntılar 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() işlevini çağırın. Bu işlev, kullanıcının en son etkinlikleriyle ilgili bilgileri 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 için ekleyin.
Kullanıcının mevcut etkinliğini almak için aşağıdaki adımları uygulayın:
getSnapshotClient()SnapshotClientörneğini oluşturmak için.addOnSuccessListenerkullanarakDetectedActivityResponsedinleyebilen birOnSuccessListeneroluşturun.- Sonucun geçerli olduğundan emin olmak için
getStatus()numaralı telefonu arayın. ActivityRecognitionResultürününü iade etmek içinDetectedActivityResponse.getActivityRecognitionResult()numaralı telefonu arayın. Kullanıcının mevcut etkinliğinin birçok yönünü öğrenmek için bu yöntemi kullanabilirsiniz. Örneğin:- Yalnızca en olası etkinliği almak için
getMostProbableActivity()numaralı telefonu arayın. - Olasılığa göre sıralanmış son etkinliklerin listesini almak için
getProbableActivities()numaralı telefonu arayın. - Belirli bir etkinlik türü için güven değerini döndürmek üzere
getActivityConfidence()işlevini çağırın. - Bir
IntentöğesininActivityRecognitionResultiçerip içermediğini tespit etmek içinhasResult()işlevini ç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ılıyor:
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 beacon'ları alma
Yakındaki beacon'lar hakkında bilgi almak için getBeaconState() numaralı telefonu arayı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'a ekleyin.
Ayrıca, Google Developers Console projeniz için Nearby Messages API'yi etkinleştirmeniz gerekir. Daha fazla bilgi için Kaydolma ve API Anahtarları
ve Başlangıç başlıklı makaleleri 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 edilir. 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 işlev, yalnızca belirtilen ad alanı ve türle kaydedilmiş ekleri olan işaretçileri döndürür. Ayrıca, ek içeriğinde bire bir 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.addOnSuccessListenerkullanarakBeaconStateResponsedinleyebilen birOnSuccessListeneroluşturun.Sonucun geçerli olduğundan emin olmak için
getStatus()numaralı telefonu arayın.Beacon durumunu döndürmek için
BeaconStateResponse.getBeaconState()işlevini çağırın.BeaconState.getBeaconInfo()numaralı telefonu arayarakBeaconState.BeaconInfoalın.
Aşağıdaki örnekte, Beacon 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ıkların cihaza takılı olup olmadığını algılamak için getHeadphoneState() işlevini çağırın. Bu işlev, OnSuccessListener değeri algılama olarak ayarlanmış bir HeadphoneStateResponse algılama durumu oluşturur.
Ardından getHeadphoneState() numarasını arayarak HeadphoneState değerini alabilirsiniz.
Mevcut kulaklık durumunu almak için aşağıdaki adımları uygulayın:
getSnapshotClient.getHeadphoneState()numaralı telefonu arayın.addOnSuccessListenerkullanarakHeadphoneStateResponsedinleyebilen birOnSuccessListeneroluşturun.- Sonucun geçerli olduğundan emin olmak için
getStatus()numaralı telefonu arayın. - Başarılı olursa kulaklık durumunu döndürmek için
HeadphoneStateResponse.getHeadphoneState()işlevini çağırın. Bu değerPLUGGED_INveyaUNPLUGGED'dir.
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() numarasına yapılan bir aramayla kullanıcının mevcut konumunu (enlem-boylam) alabilirsiniz. Bu arama, LocationResponse döndürür.
Ardından, mevcut konum verilerini içeren bir Location almak için LocationResponse.getLocation() numaralı telefonu arayabilirsiniz.
getLocation() yöntemi için android.permission.ACCESS_FINE_LOCATION izni gerekir. Bu izni AndroidManifest.xml'ye 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 edilir. 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.addOnSuccessListenerkullanarakLocationResponsedinleyebilen birOnSuccessListeneroluşturun.Sonucun geçerli olduğundan emin olmak için
getStatus()numaralı telefonu arayın.Mevcut
Location'ı iade etmek içinLocationResponse.getLocation()numaralı telefonu arayı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();
}
})