2015-08-09 20 views
9

ben Android uygulama bazen Şimdi 5.0 lolipop yükselttikten sonra, (Ben Bir HTC M8 telefonunu kullanıyordu) Android 4.1 ince çalışırdım, benim Hava kremi kontrol etmek geri inşa çalışmıyor 4.4 çalışmayı durdurdu örnek snippet'i ekliyorum.IR iletim ConsumerIrManager sınıfı sonra Android

o IR iletilmiştir diyor hiçbir ayıklama hata yok.

--Air Kremi marka Samsung (açık ve kapalı yer için IR kodları)

Not: Bana, kod herşey bağlanır kadar alay var Burada

//To hold my codes for remote say on, off temp+, temp-, swing etc 
public class TransmissionCodes{ 
    private int[] transmission; 
    private int frequency; 

    //+getters +setters +constructor 
} 

//To hold all the TransmissionCodes objects 
SparseArray<TransmissionCodes> sequence ; 

//power on 
sequence.put(0,  new TransmissionCodes(38000, "123,339,23,54,23,14,23,16,21,14,21,16,21,14,23,16,21,16,21,14,23,53,23,15,22,16,21,54,23,14,23,16,21,16,21,54,23,54,23,53,23,54,23,14,23,54,23,14,23,54,22,54,23,16,21,16,21,14,23,14,23,16,21,16,21,54,23,54,23,15,22,15,22,14,23,14,23,14,23,14,23,53,23,54,23,14,23,14,23,16,21,54,23,14,23,16,21,14,23,16,21,14,23,16,21,14,23,53,23,53,23,54,23,54,23,2500")); 
//power off 
sequence.put(1,  new TransmissionCodes(38000, "123,339,23,54,23,14,23,16,21,14,21,16,21,14,23,16,21,16,21,14,23,53,23,15,22,16,21,54,23,14,23,16,21,16,21,54,23,54,23,53,23,54,23,14,23,54,23,14,23,54,22,54,23,16,21,16,21,14,23,14,23,16,21,16,21,54,23,54,23,15,22,15,22,14,23,14,23,14,23,14,23,53,23,54,23,14,23,14,23,16,21,54,23,14,23,16,21,14,23,16,21,14,23,16,21,14,23,53,23,53,23,54,23,54,23,2500")); 


//IR call in main Activity 
findViewById(R.id.button).post(new Runnable() { 
    public void run() { 
     ConsumerIrManager mCIR = (ConsumerIrManager) getSystemService(android.content.Context.CONSUMER_IR_SERVICE); 
     mCIR.transmit(sequence.getFrequency, sequence.getTransmission); 
    } 
}); 

bir bağlantıdır yakın ama yardımcı olamazdı. Stack Overflow reference

Birisi bir şeyleri bir araya getirmek için bana yardımcı olabilir mi, yoksa bir şey eksik mi?

+0

'a bakıyorum Bir uygulamayla aynı sorunu yaşadım. Lollipop'taki hesaplama değişmiş gibi görünüyor. Düzeltmek için ne yaptığımı bulmaya çalışacağım. – Mauker

cevap

0

Başlangıçta API destekli bakliyatları oluşturduğumda, mikrosaniye cinsinden süreyi destekliyorlar. Ham verilerimi bit olarak gösterdiğim için buna dokunmadım, bunun yerine alıcımda değiştirmeyi ve iletmeyi seçtim. formül duration = (1000000/frequency) * pulse durur ve nabız değil süre dizisi iletir. Bunu düzeltmek coz, HTC uygulanan olabilir düzeltme için dışarı arıyorum Ancak

//To hold my codes for remote say on, off temp+, temp-, swing etc 
public class TransmissionCodes{ 
    private int[] transmission; //will use to store and send transmssion 
    private int frequency;//fed from my properties file 
    private String countPattern; // Fed as string from my properties file 

    //This modification in the getter did the trick 
    private int[] getTransmission() { 
     int pulses = 1000000/this.frequency; 
     String[] countArray = this.countPattern.split(","); 
     int[] anotherFix = new int[countArray.length]; 
     for (int i = 0; i < countArray.length; i++) { 
      anotherFix[i] = Integer.parseInt(countArray[i]) * pulses; 
     } 
     return anotherFix; 
    } 
    //+getters +setters +constructor 
} 

//To hold all the TransmissionCodes objects 
SparseArray<TransmissionCodes> sequence ; 

//power on 
sequence.put(0,  new TransmissionCodes(38000, "123,339,23,54,23,14,23,16,21,14,21,16,21,14,23,16,21,16,21,14,23,53,23,15,22,16,21,54,23,14,23,16,21,16,21,54,23,54,23,53,23,54,23,14,23,54,23,14,23,54,22,54,23,16,21,16,21,14,23,14,23,16,21,16,21,54,23,54,23,15,22,15,22,14,23,14,23,14,23,14,23,53,23,54,23,14,23,14,23,16,21,54,23,14,23,16,21,14,23,16,21,14,23,16,21,14,23,53,23,53,23,54,23,54,23,2500")); 
//power off 
sequence.put(1,  new TransmissionCodes(38000, "123,339,23,54,23,14,23,16,21,14,21,16,21,14,23,16,21,16,21,14,23,53,23,15,22,16,21,54,23,14,23,16,21,16,21,54,23,54,23,53,23,54,23,14,23,54,23,14,23,54,22,54,23,16,21,16,21,14,23,14,23,16,21,16,21,54,23,54,23,15,22,15,22,14,23,14,23,14,23,14,23,53,23,54,23,14,23,14,23,16,21,54,23,14,23,16,21,14,23,16,21,14,23,16,21,14,23,53,23,53,23,54,23,54,23,2500")); 


//IR call in main Activity 
findViewById(R.id.button).post(new Runnable() { 
    public void run() { 
     ConsumerIrManager mCIR = (ConsumerIrManager) getSystemService(android.content.Context.CONSUMER_IR_SERVICE); 
     mCIR.transmit(sequence.getFrequency, sequence.getTransmission); 
    } 
}); 

sadece Samsung telefon IR sahibi olmak için çalışır. LG telefonu da kontrol etmedi. Ama benim araştırmamı temel alan Samsung ve LG'nin çalışması gereken HTC'nin IR API'sinde bir tepesi var.

+0

Bunu deneyin: http://stackoverflow.com/a/30405235/1042362 – Dwebtron

1

Android'den Önce 4.4.3 Desenin her öğesi, açma/kapama darbesi için döngü sayısıdır. Android 4.4.3 için ve modelin her elemanın üzerinde

durumunda açma/kapama puls için mikro saniye sayısı.

+0

Bu satırı 'sequence.put (0, yeni TransmissionCodes (38000," 123,339,23,54,23,14,23,16,21,14,21,16,21,14,23) 'a çevirmek için bir çözüm sunabilir misiniz 1 ... 'yukarıda bahsedilen çözüm. Android senin desen' olacağını 4.4.3 önce bir pasajı belki – joyBlanks

+0

38000Hz' de, 'tarihinde 0.5s, kapalı 0.5, üzerinde 0.5 bir dalga iletmek için [19000, 190000, 19000] '- 19000 Android için' 0.5s * 38000Hz' geliyor senin desen 'olacağını 4.4.3+ [500000, 500000, 500000]' -. o size mikrosaniye için (bizi) her seferinde dönüştürmek olduğunu –

+0

Ama Ben 123,339,23,54 değil 50000,50000 50000 – joyBlanks

İlgili konular