SlideShare a Scribd company logo
1 of 16
Download to read offline
keytool -list -v -keystore ~/.android/debug.keystore
• compile ‘com.google.android.gms:play-services-nearby:8.3.0'
<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="info.akkuma.nearbysample" >



<application

android:allowBackup="true"

android:icon="@mipmap/ic_launcher"

android:label="@string/app_name"

android:supportsRtl="true"

android:theme="@style/AppTheme" >

<meta-data

android:name="com.google.android.nearby.messages.API_KEY"

android:value=“put-your-key“ />

</application>



</manifest>
キーをここに書く
@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);



mGoogleApiClient = new GoogleApiClient.Builder(this)

.addApi(Nearby.MESSAGES_API)

.addConnectionCallbacks(mConnectionCallbacks)

.addOnConnectionFailedListener(mFailedListener)

.build();



}
Nearby.Messages.getPermissionStatus(mGoogleApiClient)

.setResultCallback(new ResultCallback<Status>() {

@Override

public void onResult(Status status) {

if (status.isSuccess()) {

Nearby.Messages.subscribe(mGoogleApiClient, mMessageListener, mStrategy);

} else {

try {

status.startResolutionForResult(MainActivity.this, REQUEST_RESOLVE_ERROR);

} catch (IntentSender.SendIntentException e) {

Log.e(TAG, e.toString());

}

}

}

});
許可されていない場合
既に許可されている場合


@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if (resultCode == REQUEST_RESOLVE_ERROR) {

if (resultCode == RESULT_OK) {

Nearby.Messages.subscribe(mGoogleApiClient, mMessageListener, mStrategy);

} else {

Log.d(TAG, "Failed to resolve error with code " + resultCode);

}

}

}
許可された場合
Message message = new Message(content);



Nearby.Messages.publish(mGoogleApiClient, message, mStrategy)

.setResultCallback(new ResultCallback<Status>(){

@Override

public void onResult(Status status) {



}

});
送信するbyte配列(1MB以下・3KB以下推奨)
送信成功時のコールバック
Strategy(後述)


mMessageListener = new MessageListener() {

@Override

public void onFound(Message message) {



}

};

Nearby.Messages.subscribe(mGoogleApiClient, mMessageListener, mStrategy);
受信時のコールバック
Strategy(後述)
private Strategy mStrategy = new Strategy.Builder()

.setDiscoveryMode(Strategy.DISCOVERY_MODE_DEFAULT)

.setDistanceType(Strategy.DISTANCE_TYPE_DEFAULT)

.setTtlSeconds(Strategy.TTL_SECONDS_DEFAULT)

.build();
private Strategy mStrategy = new Strategy.Builder()

.setDiscoveryMode(Strategy.DISCOVERY_MODE_DEFAULT)

.setDistanceType(Strategy.DISTANCE_TYPE_DEFAULT)

.setTtlSeconds(Strategy.TTL_SECONDS_DEFAULT)

.build();
private Strategy mStrategy = new Strategy.Builder()

.setDiscoveryMode(Strategy.DISCOVERY_MODE_DEFAULT)

.setDistanceType(Strategy.DISTANCE_TYPE_DEFAULT)

.setTtlSeconds(Strategy.TTL_SECONDS_DEFAULT)

.build();
private Strategy mStrategy = new Strategy.Builder()

.setDiscoveryMode(Strategy.DISCOVERY_MODE_DEFAULT)

.setDistanceType(Strategy.DISTANCE_TYPE_DEFAULT)

.setTtlSeconds(Strategy.TTL_SECONDS_DEFAULT)

.build();
Nearby Messages API

More Related Content

What's hot

Groovy/Grails on Google App Engine <シンプル導入編>
Groovy/Grails on Google App Engine <シンプル導入編>Groovy/Grails on Google App Engine <シンプル導入編>
Groovy/Grails on Google App Engine <シンプル導入編>Kazuchika Sekiya
 
Multiple Hyperlinks App
Multiple Hyperlinks AppMultiple Hyperlinks App
Multiple Hyperlinks AppPeeyush Ranjan
 
BindingCollectionAdapter
BindingCollectionAdapterBindingCollectionAdapter
BindingCollectionAdapterArtyom Vlasov
 
Customizing Theme and Style for Material Design : Droid Kaigi 2016
Customizing Theme and Style for Material Design : Droid Kaigi 2016Customizing Theme and Style for Material Design : Droid Kaigi 2016
Customizing Theme and Style for Material Design : Droid Kaigi 2016Yuki Anzai
 
Actividad 02
Actividad 02Actividad 02
Actividad 02Jose AC
 
Django user permissions in your templates
Django  user permissions  in your templatesDjango  user permissions  in your templates
Django user permissions in your templatesAnton Pirker
 
Material Design with Support Design Library
Material Design with Support Design LibraryMaterial Design with Support Design Library
Material Design with Support Design LibraryTaeho Kim
 
Penambahan menu atau tampilan
Penambahan menu atau tampilanPenambahan menu atau tampilan
Penambahan menu atau tampilaniswan_di
 
Modul praktikum 9 - Android Sudaryatno
Modul praktikum 9 - Android SudaryatnoModul praktikum 9 - Android Sudaryatno
Modul praktikum 9 - Android SudaryatnoYatno Sudar
 
20101106 연합세미나 Session 2
20101106 연합세미나 Session 220101106 연합세미나 Session 2
20101106 연합세미나 Session 2Hyeon Cheol Pak
 
La vista video view
La vista video viewLa vista video view
La vista video viewYanori Perez
 
Utilizando diretivas com AngularJS
Utilizando diretivas com AngularJSUtilizando diretivas com AngularJS
Utilizando diretivas com AngularJSRodrigo Branas
 
PayPal's NemoJS and Applitools Eyes - Visual Testing with Node.js
PayPal's NemoJS and Applitools Eyes - Visual Testing with Node.jsPayPal's NemoJS and Applitools Eyes - Visual Testing with Node.js
PayPal's NemoJS and Applitools Eyes - Visual Testing with Node.jsApplitools
 
Evoluindo a arquitetura de uma aplicação com AngularJS
Evoluindo a arquitetura de uma aplicação com AngularJSEvoluindo a arquitetura de uma aplicação com AngularJS
Evoluindo a arquitetura de uma aplicação com AngularJSRodrigo Branas
 
Criando aplicações com vuejs
Criando aplicações com vuejsCriando aplicações com vuejs
Criando aplicações com vuejsFelipe César
 

What's hot (19)

Activity accueil
Activity accueilActivity accueil
Activity accueil
 
Main.xml
Main.xmlMain.xml
Main.xml
 
Groovy/Grails on Google App Engine <シンプル導入編>
Groovy/Grails on Google App Engine <シンプル導入編>Groovy/Grails on Google App Engine <シンプル導入編>
Groovy/Grails on Google App Engine <シンプル導入編>
 
Multiple Hyperlinks App
Multiple Hyperlinks AppMultiple Hyperlinks App
Multiple Hyperlinks App
 
BindingCollectionAdapter
BindingCollectionAdapterBindingCollectionAdapter
BindingCollectionAdapter
 
Customizing Theme and Style for Material Design : Droid Kaigi 2016
Customizing Theme and Style for Material Design : Droid Kaigi 2016Customizing Theme and Style for Material Design : Droid Kaigi 2016
Customizing Theme and Style for Material Design : Droid Kaigi 2016
 
Actividad 02
Actividad 02Actividad 02
Actividad 02
 
Django user permissions in your templates
Django  user permissions  in your templatesDjango  user permissions  in your templates
Django user permissions in your templates
 
Material Design with Support Design Library
Material Design with Support Design LibraryMaterial Design with Support Design Library
Material Design with Support Design Library
 
Penambahan menu atau tampilan
Penambahan menu atau tampilanPenambahan menu atau tampilan
Penambahan menu atau tampilan
 
Programa6
Programa6Programa6
Programa6
 
Modul praktikum 9 - Android Sudaryatno
Modul praktikum 9 - Android SudaryatnoModul praktikum 9 - Android Sudaryatno
Modul praktikum 9 - Android Sudaryatno
 
20101106 연합세미나 Session 2
20101106 연합세미나 Session 220101106 연합세미나 Session 2
20101106 연합세미나 Session 2
 
La vista video view
La vista video viewLa vista video view
La vista video view
 
List view
List viewList view
List view
 
Utilizando diretivas com AngularJS
Utilizando diretivas com AngularJSUtilizando diretivas com AngularJS
Utilizando diretivas com AngularJS
 
PayPal's NemoJS and Applitools Eyes - Visual Testing with Node.js
PayPal's NemoJS and Applitools Eyes - Visual Testing with Node.jsPayPal's NemoJS and Applitools Eyes - Visual Testing with Node.js
PayPal's NemoJS and Applitools Eyes - Visual Testing with Node.js
 
Evoluindo a arquitetura de uma aplicação com AngularJS
Evoluindo a arquitetura de uma aplicação com AngularJSEvoluindo a arquitetura de uma aplicação com AngularJS
Evoluindo a arquitetura de uma aplicação com AngularJS
 
Criando aplicações com vuejs
Criando aplicações com vuejsCriando aplicações com vuejs
Criando aplicações com vuejs
 

Nearby Messages API

  • 1.
  • 2.
  • 3.
  • 4. keytool -list -v -keystore ~/.android/debug.keystore
  • 5. • compile ‘com.google.android.gms:play-services-nearby:8.3.0' <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="info.akkuma.nearbysample" >
 
 <application
 android:allowBackup="true"
 android:icon="@mipmap/ic_launcher"
 android:label="@string/app_name"
 android:supportsRtl="true"
 android:theme="@style/AppTheme" >
 <meta-data
 android:name="com.google.android.nearby.messages.API_KEY"
 android:value=“put-your-key“ />
 </application>
 
 </manifest> キーをここに書く
  • 6. @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 
 mGoogleApiClient = new GoogleApiClient.Builder(this)
 .addApi(Nearby.MESSAGES_API)
 .addConnectionCallbacks(mConnectionCallbacks)
 .addOnConnectionFailedListener(mFailedListener)
 .build();
 
 }
  • 7.
  • 8. Nearby.Messages.getPermissionStatus(mGoogleApiClient)
 .setResultCallback(new ResultCallback<Status>() {
 @Override
 public void onResult(Status status) {
 if (status.isSuccess()) {
 Nearby.Messages.subscribe(mGoogleApiClient, mMessageListener, mStrategy);
 } else {
 try {
 status.startResolutionForResult(MainActivity.this, REQUEST_RESOLVE_ERROR);
 } catch (IntentSender.SendIntentException e) {
 Log.e(TAG, e.toString());
 }
 }
 }
 }); 許可されていない場合 既に許可されている場合
  • 9. 
 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 super.onActivityResult(requestCode, resultCode, data);
 if (resultCode == REQUEST_RESOLVE_ERROR) {
 if (resultCode == RESULT_OK) {
 Nearby.Messages.subscribe(mGoogleApiClient, mMessageListener, mStrategy);
 } else {
 Log.d(TAG, "Failed to resolve error with code " + resultCode);
 }
 }
 } 許可された場合
  • 10. Message message = new Message(content);
 
 Nearby.Messages.publish(mGoogleApiClient, message, mStrategy)
 .setResultCallback(new ResultCallback<Status>(){
 @Override
 public void onResult(Status status) {
 
 }
 }); 送信するbyte配列(1MB以下・3KB以下推奨) 送信成功時のコールバック Strategy(後述)
  • 11. 
 mMessageListener = new MessageListener() {
 @Override
 public void onFound(Message message) {
 
 }
 };
 Nearby.Messages.subscribe(mGoogleApiClient, mMessageListener, mStrategy); 受信時のコールバック Strategy(後述)
  • 12. private Strategy mStrategy = new Strategy.Builder()
 .setDiscoveryMode(Strategy.DISCOVERY_MODE_DEFAULT)
 .setDistanceType(Strategy.DISTANCE_TYPE_DEFAULT)
 .setTtlSeconds(Strategy.TTL_SECONDS_DEFAULT)
 .build();
  • 13. private Strategy mStrategy = new Strategy.Builder()
 .setDiscoveryMode(Strategy.DISCOVERY_MODE_DEFAULT)
 .setDistanceType(Strategy.DISTANCE_TYPE_DEFAULT)
 .setTtlSeconds(Strategy.TTL_SECONDS_DEFAULT)
 .build();
  • 14. private Strategy mStrategy = new Strategy.Builder()
 .setDiscoveryMode(Strategy.DISCOVERY_MODE_DEFAULT)
 .setDistanceType(Strategy.DISTANCE_TYPE_DEFAULT)
 .setTtlSeconds(Strategy.TTL_SECONDS_DEFAULT)
 .build();
  • 15. private Strategy mStrategy = new Strategy.Builder()
 .setDiscoveryMode(Strategy.DISCOVERY_MODE_DEFAULT)
 .setDistanceType(Strategy.DISTANCE_TYPE_DEFAULT)
 .setTtlSeconds(Strategy.TTL_SECONDS_DEFAULT)
 .build();