赤外線リモコン(IrRemoteController)概要

【APIの説明】

赤外線リモコンAPIについて

赤外線リモコンAPIは赤外線リモコン送信機能を提供します。
キャリア、データ変調方式、フレーム構成等を指定し、様々なリモコン信号を送信する事ができます。

上記のように、リーダー・データ・トレーラーから構成される1データ単位をフレームと呼びます。
複数フレームをまとめたものをブロックと呼びます。

赤外線リモコン信号を送信する際のキャリア(搬送波)周波数、および"0"あるいは"1"の波形を表すデータ変調方式(論理パルス情報)を指定したうえで、 ブロックデータを送信します。

データ変調方式(論理パルス情報)とは、下記のように"0"あるいは"1"を表す波形の情報です。

IrRemoteControllerクラス

キャリア(搬送波)データ変調方式(論理パルス情報)を指定します。
IrRemoteController#send()でブロック(複数フレーム)データを送信します。

IrRemoteControllerFrameクラス

1フレームデータを構築します。

このAPIを使用するには

SDKへAddOnの追加と、Manifestファイルへライブラリの参照を記述する必要があります。

【パッケージ/クラス一覧】

パッケージ名 クラス名 備考
jp.co.sharp.android.io.irrc IrRemoteController リモコンデータを送信するクラス
IrRemoteControllerFrame フレームデータを定義するクラス

【APIの使い方】

Manifestファイルの記述

まず、Manifestファイルへ、アプリケーション が参照するライブラリの参照設定を行います。
Manifestファイルの<application>要素の子要素に<user-library>を追加します。
<user-library>のandroid:name属性にjp.co.sharp.android.io.irccを設定します。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="com.example.package.name">
  ...
  <application android:name="MyApplication" >
    <uses-library android:name="jp.co.sharp.android.io.irrc" />
    ...
  </application>
  ...
</manifest>

これらの宣言がなければ、赤外線リモコンクラスを使用することができないため、注意してください。

赤外線リモコンデータ送信方法

以下のリモコンデータを送信する場合のサンプルコードを示します。

○リモコンデータ

キャリア 論理パルス0 論理パルス1
データ
変調方式
PPM変調
High-Low
データ
変調方式
PPM変調
High-Low
High時間:
12.0(μsec)
High時間:
100(μsec)
High時間:
200(μsec)
Low時間:
15.0(μsec)
Low時間:
500(μsec)
Low時間:
800(μsec)

○フレーム1のデータ

リーダー データ トレーラー フレームの間隔時間 繰り返し回数
High時間:
50(μsec)
0001 0011
0111 111
High時間:
80(μsec)
30000
(μsec)
1回
Low時間:
300(μsec)
15ビット

○フレーム2のデータ

リーダー データ トレーラー フレームの間隔時間 繰り返し回数
High時間:
50(μsec)
1110 1100
1000 000
High時間:
80(μsec)
30000
(μsec)
1回
Low時間:
300(μsec)
15ビット

○フレーム1と2をまとめたブロック繰り返し回数:2回

上記のリモコンデータを送信する場合は、以下のようなコードとなります。
例外処理などは別途必要となります。

/* リモコンデータ */
IrRemoteController rc = new IrRemoteController(this);
rc.setCarrier(120, 150); // リモコンデータ:キャリア
rc.setPulse0(IrRemoteController.PPM_HIGH_LOW, 100, 500); // 論理パルス0
rc.setPulse1(IrRemoteController.PPM_HIGH_LOW, 200, 800); // 論理パルス1
 
/* フレーム1のデータ */
IrRemoteControllerFrame frame1 = new IrRemoteControllerFrame();
frame1.setLeader(50, 300); // リーダー
frame1.setFrameData(new byte[] { 0x13, 0x7E }, 15); // データ
frame1.setTrailer(80); // トレーラー
frame1.setFrameLength(30000); // フレームの時間間隔
frame1.setRepeatCount(1); // 繰り返し回数
 
/* フレーム2のデータ */
IrRemoteControllerFrame frame2 = new IrRemoteControllerFrame();
frame2.setLeader(100, 150); // リーダー
frame2.setFrameData(new byte[] { (byte) 0xEC, (byte) 0x80 }, 15); // データ
frame2.setTrailer(80); // トレーラー
frame2.setFrameLength(30000); // フレームの時間間隔
frame2.setRepeatCount(1); // 繰り返し回数
 
/* ブロックデータ */
IrRemoteControllerFrame[] block = new IrRemoteControllerFrame[] { frame1, frame2 }; // フレーム1とフレーム2を格納する
 
/* ブロックデータを送信 */
rc.send(block, 2);

【その他の特記事項】

サンプルアプリについて

ダミーデータのため正常な動作はご確認いただけませんが、実際に機器が動作する恐れもありますので利用にあたってはご注意ください。

赤外線リモコン送信について

以下の場合には赤外線リモコン送信はできません。

・音声電話中(発信、着信、通話中)
・低電圧中
・電波OFFモードがONである場合

また、一回の送信は最長10秒間となります。

赤外線リモコンをサポートしない端末

赤外線リモコンAPIをサポートしていない端末では、正常に動作させることが出来ません。

エミュレーターでの赤外線リモコン処理

エミュレータでは正常に動作させることが出来ません。
実際の動作は赤外線リモコンAPIに対応した実機にてご確認ください。

このページの先頭へ