/ / ConsumerIrManager.transmitがLollipopで壊れていますか? -アンドロイド、赤外線

ロリポップで壊れたConsumerIrManager.transmit? - アンドロイド、赤外線

昨日、Samsung Galaxy S4を最新のKitKatからLollipop(5.0.1)にアップグレードしましたが、何ヶ月も使用していたIRリモコンアプリが機能しなくなりました。

KitKat ConsumerIrManagerの最新のコピーを使用していたため、transmit()関数は以下のコードを使用してパルス数を送信していました。それは非常にうまく機能しました。

private void irSend(int freqHz, int[] pulseTrainInMicroS) {
int [] pulseCounts = new int [pulseTrainInMicroS.length];

for (int i=0; i<pulseTrainInMicroS.length; i++) {
long iValue = pulseTrainInMicroS[i] * freqHz / 1000000;
pulseCounts[i] = (int) iValue;
}

m_IRService.transmit(freqHz, pulseCounts);
}

昨日機能しなくなったとき、私はそれを注意深く見始めました。

送信された波形は、要求されたパルス列とは何の関係もないことに気づきました。以下のコードでさえ正しく機能しません!

private void TestSend() {
int [] pulseCounts = {100, 100, 100};

m_IRService.transmit(38000, pulseCounts);
}

結果として得られる波形には多くの問題があったため、まったく役に立ちません。

  • 波形は完全に間違っていました
  • 周波数が間違っていて、パルス間隔が規則的ではありませんでした
  • それらは再現可能ではありませんでした

復調された波形を見る: 100、100、100が正しくレンダリングされていれば、2.6ms(4.4.3(?)100 usより前)の2つのパルスが表示されているはずです。代わりに、「[復調]再現性のない1.BMP」と「[復調]再現性のない2.BMP」を受け取りました(添付を参照)。波形は2パルスではないことに注意してください...実際、それは再現性さえありません。

以下のキャプチャについては、IRが検出されると信号がローになります。

間違っていて再現できない

間違っていて再現できない

2つのパルスが2.6ミリ秒と2.6ミリ秒の間ローになるのを確認する必要があります(下の緑色の線を参照)。

ここに画像の説明を入力

また、50、50、50を使用してより短いパルスを試しましたが、最初のパルスも正しくないことがわかりました(以下を参照)。

ここに画像の説明を入力

変調された波形を見る: 頻度が正しくありませんでした。代わりに、それは約18kHzで不規則でした。

間違った頻度と不規則

私はこれについてかなりの経験があり、電子工学の正式な教育を受けています。

ConsumerIrManager.transmit()にバグがあるようです...

不思議なことに、電話に付属の「WatchOn」アプリケーションは引き続き機能します。

あなたが与えることができるどんな洞察にも感謝します。

試験装置: Tektronix TDS-2014B、100 MHz、ピーク検出モードで使用。

回答:

回答№1は0

@IvanTellezが言うように、Androidに変更が加えられましたこの機能に関して。不思議なことに、(トラブルシューティングの目的で)単純なIR信号を出力させた場合、関数は上記のように動作します(不規則に、間違ったキャリア周波数など)。最終的に通常のタイプのIR信号に戻ったとき、それは正しく機能しました。