SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事(AD)

ソフトとハードのつくり手が自由につながるIoTプラットフォーム「Linking」の概要と使い方

  • このエントリーをはてなブックマークに追加

周辺デバイスからデータを受信

 周辺デバイスからデータを受信する方法を紹介します。

サービスアプリへの通知

 NotifyNotificationクラスにobserver(NotifyNotification.NotificationInterface)を設定することで周辺デバイスからの通知を受けることができます。

 受信したデータは以下の名称でローカルデータとしてSharedPreferencesに格納されます。

  • 受信データ:NotificationInformation
LinkingService.java
import com.nttdocomo.android.sdaiflib.NotifyNotification;
import com.nttdocomo.android.sdaiflib.Define;

public class LinkingService extends Service {

    private NotifyNotification mNotifyNotification;

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        mMyNotificationInterface = new MyNotificationInterface();
        mNotifyNotification = new NotifyNotification(this, mMyNotificationInterface);
    }

    public void onDestroy() {
        super.onCreate();
        mNotifyNotification.release();
    }

    private void sendNotification(String title, String text){
        NotificationCompat.Builder notificationBuilder =
                new NotificationCompat.Builder(this)
                        .setSmallIcon(android.R.drawable.sym_def_app_icon)
                        .setContentTitle(title)
                        .setContentText(text);

        NotificationManagerCompat notificationManager =
                NotificationManagerCompat.from(this);
        notificationManager.notify(0, notificationBuilder.build());
    }

    // 周辺デバイスからの通知を受信する
    class MyNotificationInterface implements NotifyNotification.NotificationInterface {
        @Override
        public void onNotify() {
            SharedPreferences preference = getSharedPreferences(Define.NotificationInfo, Context.MODE_PRIVATE);
            String appName = preference.getString("APP_NAME", "");
            sendNotification("通知", "[" + appName +"]" + “から通知がありました”);
        }
    }
}

距離通知

 NotifyRangeクラスにobserver(NotifyRange.MyRangeInterface)を設定することで距離の変化通知を受けることが可能になります。

 受信したデータは以下の名称でローカルデータとしてSharedPreferencesに格納されます。

  • 受信データ:RangeInformation

 距離通知を受信する場合は、サービスアプリのマニフェストファイルに、距離通知対応の宣言を記載してください。

AndroidManifest.xml
<application
    ~中略~
        <meta-data
            android:name="com.nttdocomo.android.smartdeviceagent.feature.notify_distance"
             android:value="true" />
    ~中略~
</application>
MainActivity.java
import com.nttdocomo.android.sdaiflib.NotifyRange;

public class MainActivity extends AppCompatActivity {

    private NotifyRange mNotifyRange;
    private MyRangeInterface mMyRangeInterface;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ~中略~
        mMyRangeInterface = new MyRangeInterface();
        mNotifyRange = new NotifyRange(this, mMyRangeInterface);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mNotifyRange.release();
    }

    // 距離通知を受信する
    class MyRangeInterface implements NotifyRange.RangeInterface {
        @Override
        public void onRangeChange() {
            SharedPreferences preference = getSharedPreferences(Define.RangeInfo, Context.MODE_PRIVATE);
            int rangeSetting = preference.getInt("RANGE_SETTING", -1);
            String address = preference.getString("BD_ADDRESS", "");

            // 3段階で通知される
            switch (rangeSetting) {
                case 1: {
                    Log.d(TAG, address + " : との距離は" + "近い");
                    break;
                }
                case 2: {
                    Log.d(TAG, address + " : との距離は" + "やや近い");
                    break;
                }
                case 3: {
                    Log.d(TAG, address + " : との距離は" + "遠い");
                    break;
                }
            }
        }
    }
}

さいごに

 本記事ではLinkingの概要と使用方法を紹介しました。いかがでしたでしょうか。

 このようにLinkingアプリを利用することで、周辺デバイスとサービスアプリの連携がより簡単になります。サービスアプリが増えることでユーザーはもっと身近にIoTを体験することができるでしょう。

 また、Linkingでは新しい周辺デバイスやサービスアプリを作っていく仲間を求めています。ハードウェア開発者の方も、ソフトウェア開発者の方も、ユーザーコミュニティ「Project Linking」に参加してみませんか。

 Project Linkingに関心を持たれた方は、以下のサイトの「Contact Us」よりお問い合わせください。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

株式会社ブリリアントサービス 角野 宏樹(カクノ ヒロキ)

 1990年生まれ。神戸電子専門学校のゲーム学科を卒業後、Androidの仕事がしたいと思い株式会社ブリリアントサービスに就職。中学、高校時代にバレーボールで培った体力を元にAndroidアプリを中心としたスマートフォン開発事業に携わっている。バレーボールとロードバイクとアニメが趣味。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9224 2016/02/17 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング