#Androidで赤外線送信を行います。
受信は取り扱いません。(私の端末が非対応)
Androidには赤外線通信対応している端末と、していない端末があるので注意してください。
ConsumerIrManagerクラスを使用するだけで簡単に実装できます。
このクラスはandrod.hardwareパッケージに入っていますが、このパッケージにはカメラとかセンサとか扱う系のやつが入っていて面白そうです。
android端末が赤外線通信に対応しているか
ConsumerIrManager irM = (ConsumerIrManager) getSystemService(CONSUMER_IR_SERVICE);
((TextView) findViewById(R.id.text)).setText(irM.hasIrEmitter() ? "この端末で使用できます" : "この端末では使用できません");
//hasIrEmitter()は赤外線が使用できるならtrue,そうでなければfalseです。
赤外線をAndroid端末から送信
//carrierFrequency :ヘルツ単位のIRキャリア周波数。 →大抵38000で問題なし。各自で調べる
//pattern :送信するマイクロ秒単位の交互のオン/オフパターン。 int配列
irM.transmit(38000, pattern);//送信
使用例
import androidx.appcompat.app.AppCompatActivity;
import android.hardware.ConsumerIrManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
ConsumerIrManager irM;
int[] pattern;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
((Button) findViewById(R.id.sendButton)).setOnClickListener(this);
irM = (ConsumerIrManager) getSystemService(CONSUMER_IR_SERVICE);
((TextView) findViewById(R.id.text)).setText(irM.hasIrEmitter() ? "この端末で使用できます" : "この端末では使用できません");
赤外線パターン
pattern = new int[]{3534, 1735, 466, 419, 466};//...省略
}
@Override
public void onClick(View v) {
//carrierFrequency :ヘルツ単位のIRキャリア周波数。 →大抵38000らしい?
//pattern :送信するマイクロ秒単位の交互のオン/オフパターン。
irM.transmit(38000, pattern);
}
}