タグ

ブックマーク / blog.techfirm.co.jp (18)

  • [Android 5.0] BLE ペリフェラル側のデータ通信実装 | Lab

    こんにちは、KID.Aです。 前回の記事ではペリフェラルのアドバタイジングデータの発信を実装しました。 今回はペリフェラルのデータ通信の実装をしていきます。 まずは、データ通信を行う際はアドバタイジングで設定するsetConnectableをtrueにします。 AdvertiseSettings.Builder settingBuilder = new AdvertiseSettings.Builder(); settingBuilder.setConnectable(true); これでデータ通信が可能になります。 BluetoothGattServerの実装 ペリフェラルにはBluetoothGattServerを使用してサービス登録やデータのやり取りを行います。 ・開発サイトのAPI http://developer.android.com/intl/ja/reference/and

  • [Android 5.0] BLE ペリフェラル側のアドバタジング発信 | Lab

    こんにちは、KID.Aです。 今更ながらですが、5.0からの追加されたBLEのペリフェラル側の実装を記載します。 BLEのペリフェラルはアドバタイジングパケットを発信できます。 今回はアドバタイジグパケットの発信までを実装します。 ちなみにAndroidのセントラル側の実装は過去の記事に記載しています。 アドバタイジングパケットを発信するためにはBluetoothLeAdvertiserが必要です。 ・開発サイトのURL http://developer.android.com/intl/ja/reference/android/bluetooth/le/BluetoothLeAdvertiser.html では実装の手順、説明をしていきます。 1.AndroidManifest.xmlに以下を追加します <uses-permission android:name="android.per

  • Kotlinのいいところ/Kotlin Android Extensions | Lab

    先日、Kotlinが1.0-betaとなりました。(The Kotlin Language: 1.0 Beta is Here!) そろそろ1.0リリースも見えてきていますし、GitHub上のKotlin LOCもどんどん増加しています。 Kotlinを始めてみるにはいい時期じゃないでしょうか。 今回はKotlin…ではなく、Android Studioのプラグインである「Kotlin Android Extensions」で提供されている機能について説明します。 ・Kotlin Android Extensionsとは 「Kotlin Android Extensions」は、「findViewById書くの面倒。どうにかしてよ、これ。たまにNPEも出るし…」問題に対応したAndroid Studio(Intelli J)のプラグインです。 最近のAndroidアプリ開発でfindVie

  • Camera2の撮影音の機種依存について | Lab

    こんにちは、KID.Aです。 今回もCamera2はAPIで気をつけなければいけないことを記載します。 Android LからCameraがdeparicatedされて、Camera2を使わなければいけないことになりました。 Camera2はCameraのAPIのよりできることもだいぶ増えました。しかしいいことばかりではなく、CameraのAPIなら意識しなくてもいいことがCamera2のAPIでは意識しなければいけない点もでてきています。その1つとして、写真を撮影した際の撮影音になります。 Camera2では基的には撮影時(CaptureSession#capture)に撮影音が鳴りません。そのため、MediaAcionSoundのAPIを使って撮影音を鳴らさなければなりません。 ・開発サイトのMediaAcionSoundのAPI http://developer.android.c

  • Kotlinのいいところ/Null-Safety | Lab

    今年はKotlinがくる…と社内で言い続けて、もう10ヶ月。私達のような受託開発をメインにしている会社では、なかなか実案件に投入するのが難しいところかと思います。 (なにしろ、Ver.1.0にもなってないものを使うのかというところでひっかかる人達もいらっしゃるので…) そんな中、今回を含めて数回でAndroidアプリの開発現場でKotlinを利用すること得られるメリットを紹介したいと思います。 Kotlinの使い方や「Hello, world.」などは http://kotlinlang.org/docs/tutorials/ を読んでいただければと思います。 今回はその中のNull-Safetyについて紹介します。 Null-Safetyとは NullPointerException…甘美な響きですね(笑)。 正直な話、「ぬるぽ」はテストフェーズで発生する不具合の原因となる例外の一つです

  • Google GlassでLiveCardを実装する | Lab

    こんにちはKID.Aです。 今回はLiveCardを使って、timelineに表示するアプリを作ってみます。 まず、実装の前にGoogle Glassの基礎動作やUIについて説明します。 基動作 Google Glassを起動すると下記のホームが表示されます。 右スワイプで過去の情報、左スワイプで現在/未来の情報や設定画面に遷移できます。 これらの軸をtimelineと呼びます。 UI要素について ・Static card テキスト、HTML、画像、ビデオなどを表示する。live cardsかimmersionsを実装できます。 ホームからタップを押下して、static cardが表示されます。 ・Live card 高頻度でレンダリングしたり、現時点で重要だったりするカードを表示します。 例えば、ストップウォチやカレンダーなどを作成する際に利用します。 動作は、上記のようにServic

    Google GlassでLiveCardを実装する | Lab
  • [Android] ActionBarActivityを使う | Lab

    こんにちは、KID.Aです。 今回は、少し古い情報ですが、アップさせていただきます。 Android support Library v7からActionBarActivityが登場しました。 今までActionBarを2系バージョンで使用する場合は、ActionBarSherlockなどのオープンソースを使用していたと思いますがActionBarActivityのおかげで、オープンソースを使用しなくても、2系バージョンでもActionBarが使えるようになりました。 ActionBarでできること ・メニュー ・ドロップリスト ・タブ 実装 使用方法は特別難しくありません。 すでに最近のEclipseではAndroidプロジェクトを作成すると、デフォルトでActivityではなく、ActionBarActivityで作成されます。 通常は、以下の画面でテーマにAction Barをいれる

    [Android] ActionBarActivityを使う | Lab
  • AndroidとiOS間のデータのやりとりをBluetooth LEで行う | Lab

    こんにちは、ゴールデンウィークは引きこもって大好きな映画を見ていたmanaです。 今回は、AndroidとiOSを使用して、Bluetooth LEを使ってデータのやりとりを行います。 といっても、「[iOS] Bluetooth LEでデータのやりとり」でiOSのBluetooth LEの使い方を説明しましたので、AndroidBluetooth LEの使い方の説明がメインになります。 Bluetooth LEの説明については「AndroidでiBeaconを発見する」を参照してください。 ペリフェラルとセントラルについて Androidは現在、ペリフェラルになれません。Androidを使用する場合はセントラルとしてしか使用できません。 ※Android5.0からアドバタイジングできるようになり、ペリフェラル側の実装ができます。以下の記事で紹介しています。 ペリフェラル側のアドバタジン

  • [iOS] Bluetooth LEでデータのやりとり | Lab

    こんにちは、最近プロジェクトが忙しくて映画を見れていないmanaです。 今回は、iOSでBluetooth LEを使ってデータのやりとりを行いたいと思います。 Bluetooth LEの説明は「AndroidでiBeaconを発見する」を参照してください。 実際にデータのやりとりする場合は、役割としてペリフェラル、セントラルにわかれます。 セントラル(中心機器)、ペリフェラル(周辺機器) 機器には「役割」があります。その役割に「セントラル」と「ペリフェラル」があります。 例えば、iPhoneをセントラル、iBeaconなどの周辺装置をペリフェラルとするとイメージしやすいです。 ペリフェラルはアドバタイジング(「宣伝」)パケットを常に発信しており、セントラルは一定範囲内に入ると、ペリフェラルからの通知を受け取ることができます。 通信 ペリフェラルからセントラルにアドバタイジングパケットで通知

  • [Android 4.4] フルスクリーンで動くアプリを作る | Lab

    こんにちはKID.Aです。 Kitkatがリリースされてからもう1カ月近くたってますね。 ラボではあまりKitkatのネタを紹介していないので、これから少しずつ紹介できたらいいと思います。それではAndroid 4.4から追加されたAPIの紹介をしていきます。 フルスクリーンの説明 今まで、下記のようなシステムバーとナビゲーションバー(赤丸箇所)をSYSTEM_UI_FLAG_HIDE_NAVIGATIONとSYSTEM_UI_FLAG_FULLSCREENを使って隠すことはできました。 下記の画像はSYSTEM_UI_FLAG_HIDE_NAVIGATIONとSYSTEM_UI_FLAG_FULLSCREENを使用した場合です。 しかし、1点でもタップすると、すぐにシステムバーとナビゲーションバーが再表示されてしました。 それが、タッチされても再表示しないAPIが追加されました。これで全

    [Android 4.4] フルスクリーンで動くアプリを作る | Lab
  • [iOS 7] NSURLSessionでバックグラウンド通信をする | Lab

    NSURLSessionの実装 それでは実際にNSURLSessionを実装してみます。 今回はテックファームのホームページをNSURLSessionで取得したいと思います。 – UIControllerView.mの追加コード – - (IBAction)pushConnection:(id)sender { // セッションの種類を決めます NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration]; // セッションを作ります NSURLSession *urlSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate: nil deleg

    [iOS 7] NSURLSessionでバックグラウンド通信をする | Lab
  • [iOS 7] アプリからAirDropを使用する | Lab

    こんにちはKID.Aです。 今回もiOS 7の新機能について記載していきたいと思います。 iOS 7からAirDropという機能が加わりました。AirDropは元々 MacのOS X Lion以降に追加されている機能で、Wi-Fi対応のMac間で直接にファイルを共有できます。 iOS 7が登場した際に、AirDropの機能がiOSにも搭載されiPhone同士でもファイル共有が簡単にできるようになりました。 しかし、現在のところiOS(iPhone、iPod touch、iPad)とMacの間ではまだAirDropが使用できません。(Mavericksでも試しましたが、ダメでした。) iPhoneMac間で早くAirDropが使えるようになるといいですね。 それでは、AirDropの使用方法、アプリから使用する実装方法を順番に説明します。 使用方法 実機でAirDropを使ってみます。操作

  • [iOS 7] Background Fetchについて | Lab

    こんにちは、KID.Aです。 iOS 7からは「Background fetch」モードと「Remote notification」モードの新しいマルチタスク機能が追加されました。 Remote notificationの挙動についてで「Remote notification」モードを説明したため、今回は「Background fetch」モードについて説明をしたいと思います。 実装方法 「Background fetch」モードの実装方法を紹介します。 プログラム側 まずは、Xcodeを起動して、プロジェクトを作成します。プロジェクト名は「FetchStudy」にします。 次に、CapabilitiesのBackground Modesを項目を開きます。 Background ModesをONにします。 ModesのBackground fetchをチェックします。 AppDelegat

  • [iOS 7] Remote notificationの挙動について | Lab

    こんにちは、KID.Aです。 iOS 7からは「Background fetch」モードと「Remote notification」モードの新しいマルチタスク機能が追加されました。 「Background fetch」モードは指定した間隔(厳密には端末依存の間隔になります)でバックグラウンドアプリに通知が来る機能です。SNSのタイムラインなどの最新情報をユーザに見せたい場合に使えると思います。 「Remote notification」モードは、APNsからのプッシュ通知を受け取るタイミングで、バックグラウンドアプリにも通知が来る機能です。主に、ニュースアプリやコンテンツアプリなど定期的に情報更新が必要なアプリに相性がよい機能で、APNsの通知したタイミングでバックグラウンド処理が行えるため、予め重たいデータをダウンロードすることによって、アプリを起動した際に直ぐに最新の情報がみることがで

  • Tizen小ネタ: MacでもSDKが動くように!! | Lab

    いまさらですが、2月にリリースされたTizen SDK 2.0で「ついに!!」Mac OS Xがサポートされました。 これでTizenアプリの開発をするためにVagrantでUbuntuを起動する生活からオサラバです。 Mac OS Xに対応したのが一番大きな変更点(偏見)ですが、おまけ程度に2.0で追加されたその他の変更点についてもさらりと説明します。 Tizen Native Frameworkをサポート 今回のSDKからTizen Native Frameworkをサポートするようになりました。Tizen Native Frameworkを用いることでC++を使ったNativeアプリの開発が可能になります。 …しかし、HTML5+JSをバリバリ推していたTizenがここでNativeアプリサポートを入れる理由はなんでしょう?? これはHTML5+JSだけではカバーしきれない範囲がある

  • node.jsでPassbookサーバをつくってみる(4) | Lab

    もはや、筆者にとってライフワークとなりつつあるこの連載。なぜ、連載形式にしてしまったのかを後悔しつつ第4回目です。 今回はこれまで作ったコードをとりまとめ、実際に使えるようにリファクタリングと必要な処理を追加してPassbookサービスを作るためのベースとなるようにします。 まずはmanifest.jsonを作る処理と署名をする処理をメインコードから分離します。署名する処理はさっくり分離、manifest.jsonを作る処理はちょっと考えて以下のようなコードにしました。 manifest.js var crypto = require('crypto'); HASH_ALGO = 'sha1'; HASH_FORMAT = 'hex'; // // contentsはObject(Map)を想定 // exports.createManifest = function(contents)

  • node.jsでPassbookサーバをつくってみる(3) | Lab

    初回のポストで3回くらいと言っておきながら、3回では終わらないことが確実な状況に… 前回まででmanifest.jsonを生成する処理までは作りました。 今回はそれに加えて、署名をする処理、Zipで固める処理を追加して、一旦サーバとして作り切ってしまいます。 署名をする際に必要となるのが証明書となります。今回は処理を書く前に、必要な証明書ファイルたちをキーチェインから取り出しておきます。 まず、証明書はiPhoneアプリの作成時と同様にDeveloper Site の Provisioning Portal から作成できます。 作成方法はAppleのドキュメントを見て頂き、生成した証明書ファイルをMacのキーチェインにImportしておきます。 Importが完了したら、キーチェインに入っている証明書をp12形式で書き出します。キーチェインでImportした証明書を選択し、ファイルメニュー

  • node.jsでPassbookサーバをつくってみる(2) | Lab

    前回はPassの生成に必要なファイル(pass.json, icon.png, logo.png)の3つのファイルを準備し、Passのデザインの確認までを行いました。 今回は端末にダウンロードできるPassをどのようにサーバサイドで生成するかを説明します。なお、生成にはAppleのデベロッパーサイトで証明書を取得する必要が ありますので、ご注意ください。 あと、もちろん node.js も入れといてくださいね。 まず、Passbookに読み込ませるPassファイルの構造から説明します。 Passファイルの構造は普通のZipファイルになっています。Zipファイル内に必要なファイル(pass.jsonやicon.png)を固めて端末に送信しています。実際に前回作ったPassファイルの中身を unzip -l してみると… asuna:Passes tetsuo$ unzip -l hoge.p

  • 1