Medion S10346 Infrarot-Schnittstelle

  • Antworten:5
Klaus Hagemeyer
  • Forum-Beiträge: 20

20.06.2016, 18:00:21 via Website

Ich versuche die Infrarot-Schnittstelle meines Medion S10346 programmiermäßig zu verstehen. Hierzu gibt es den "ConsumerIrManager", wie in "(Um Spam in unserem Forum zu vermeiden, können neue Mitglieder vorerst keine Links auf externe Webseiten veröffentlichen. Weiß jemand, wie ich das umgehen kann?)" beschrieben. Ein Beispiel gibt es z.B. in "(Um Spam in unserem Forum zu vermeiden, können neue Mitglieder vorerst keine Links auf externe Webseiten veröffentlichen. Weiß jemand, wie ich das umgehen kann?)", das sofort ohne Kommentar zusammenkracht, wenn ich versuche z.B. die Sendefrequenzen abzufragen. Hier ein Beispiel mit dem auf das Wesentliche reduzierten Code:

package com.example.klaus.consumerirsimpletest;
import android.app.Activity;
import android.content.Context;
import android.hardware.ConsumerIrManager;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends Activity {
ConsumerIrManager mCIR;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Get a reference to the ConsumerIrManager
mCIR = (ConsumerIrManager)getSystemService(Context.CONSUMER_IR_SERVICE);
setContentView(R.layout.activity_main);
if (!mCIR.hasIrEmitter()) {
Toast.makeText(this, "No IR Emitter found", Toast.LENGTH_SHORT).show();
return;
}
else {Toast.makeText(this, "IR Emitter found", Toast.LENGTH_SHORT).show();}
// Get the available carrier frequency ranges (CRASH!)
ConsumerIrManager.CarrierFrequencyRange[] freqs = mCIR.getCarrierFrequencies();
Toast.makeText(this, "survived", Toast.LENGTH_SHORT).show();
}

}

Wenn ich die vorletzte Zeile (ConsumerIrManager. ...) nicht wegkommentiere, kracht das Programm unmittelbar nach Aufruf mit "ConsumerIRsimpleTest wurde beendet" zusammen, anderenfalls wird die letzte Zeile (Toast.makeText(this, ...) ausgeführt. Ich habe erst mal einen Hardware-Fehler vermutet. Es gibt aber von Medion ein Infrarot-Fernbedienprogramm, das den Infrarot-Sender des Medion S10346 verwendet und zum Lieferumfang gehört und funktioniert. D.h. es muss außer dem ConsumerIrManager noch andere Möglichkeiten geben auf die Infrarot-Schnittstelle zuzugreifen. Ich habe aber trotz langer Suche nichts gefunden.
Weiß jemand da was drüber?

Antworten
pepperonas
  • Forum-Beiträge: 434

20.06.2016, 22:33:30 via Website

Den ersten Teil der Nachricht kann man kaum verstehen, da irgendwas mit den Links bei dir wohl nicht klappt?
Wie auch immer.. Wenn du den Code in Codeblöcke gepackt, hättest wäre es angenehmer sich die Sache näher anzusehen.

Hier ein Beispiel mit dem auf das Wesentliche reduzierten Code:

Hmm, so auf den ersten Blick liegt der Grund beim Absturz dann wohl im "Unwesentlichen"? Vermutlich hat das Bytearray eine ungünstige Länge o.ä....???

Ohne Logcat wird es schwierig zielgerichtet auf Fehlersuche zu gehen.

Trotzdem interessante Frage.. ich hatte nach stundenlanger Recherche damals keinen Bock mehr mich näher damit zu befassen, ausschlaggebend war letztlich aber der Grund, dass die Steuerung der IR-Diode bei jedem Gerät andere Parameter benötigt (also ein HTC Gerät mit Code, der auf einem Samsung Gerät korrekt übertragen wird, nicht zwangsläufig funktioniert). Soll ja auch Leute geben, die sich daheim eine extra Apparatur aufbauen um die Signale abzufangen :)

Open Source

Antworten
Klaus Hagemeyer
  • Forum-Beiträge: 20

21.06.2016, 10:16:55 via Website

"Um Spam in unserem Forum zu vermeiden, können neue Mitglieder vorerst keine Links auf externe Webseiten veröffentlichen" stand da, als ich versucht habe meinen Beitrag mit den "richtigen" Links abzuschicken. Aus Frust darüber habe ich die Links dann einfach durch obigen Satz ersetzt.
Vielleicht kann ich das System übertölpeln, indem ich die Links als Bild schicke:
image
Das im zweiten Link angegebene Ur-Programm stürzt an der selben Stelle ab wie mein auf das Wesentliche reduzierter Code. Es macht nur mehr Arbeit es zu verstehen, weil es ja nicht nur abstürzen, sondern auch noch was Richtiges machen soll.

Um das Problem noch mal zusammen zu fassen: Der ConsumerIrManager funktioniert mit meinem Medion S10346 nicht, es gibt aber Programme, die sehr wohl auf die Infrarot-Schnittstelle des Medion S10346 zugreifen können, nur eben auf eine mir nicht bekannte Art.

Antworten
pepperonas
  • Forum-Beiträge: 434

21.06.2016, 10:59:40 via Website

So richtig ernst kann ich dich nicht nehmen. :D

Warum machst du nicht einfach

android.googlesource.com/platform/cts/+/1856a4ef10530ae3058e077e2c7101b4c27ae3b6/tests/tests/hardware/src/android/hardware/consumerir/cts/ConsumerIrTest.java?autodive=0%2F

? Das kann sich jeder schnell kopieren und gut :)

Nun aber zurück zu dem Fehler...
Ich tippe mal, dass Zeile 1-15 problemlos durchlaufen und Zeile 27-30 sehen auch unproblematisch aus.
Nochmal: ohne Logcat kann man wenig für dich tun. Woher sollen wir wissen, wo das Programm abstürzt?

Hast aber ein schönes Bild von dir drin ;)

Open Source

Antworten
Klaus Hagemeyer
  • Forum-Beiträge: 20

22.06.2016, 11:18:11 via Website

Der Logcat-Hinweis hat mich gerettet, danke! Mit Filter auf "Error" erschien gleich vorne in der 3. Logcat-Zeile:

java.lang.SecurityException: Requires TRANSMIT_IR permission

Nachdem ich in die AndroidManifest.xml

    <uses-permission android:name="android.permission.TRANSMIT_IR"
    android:required="false" />
<uses-feature android:name="android.hardware.consumerir" />

eingesetzt hatte, funktionierte das in dem Bild in meinem letzten Beitrag angegebene Testprogramm.
Mit dem von dir vorgeschlagenen Testprogramm habe ich auf Grund einer Bildungslücke meinerseits Schwierigkeiten, weil ich nicht weiß, wie man ein Programm ohne Activity, onCreate usw. zum Laufen kriegt. Könntest du mir das evtl. kurz erklären oder mitteilen wo das steht?

Antworten