Hallo,
ich will mit meinen Android Smartphone HEX IR codes senden. Ich habe es als erstes mit Buttons versucht, was auch geklappt hat. Dazu habe ich einen Code von Github benutzt, welcher gut funktioniert hat. Nun habe ich mir aber gedacht wie wäre es mit einem SeekBar, in diesem Fall einen Circular SeekBar. Das ist der Code mit dem Button den ich genutzt habe und der wie bereits gesagt funktionirt hat:
im Anhang code1, da die Nachricht sonst zu lang wäre.
Das ist der Code mit welchem ich es mit dem SeekBar versucht habe, der hat nicht funktioniert:
import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.SparseArray;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import com.akaita.android.circularseekbar.CircularSeekBar;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import android.content.Context;
import com.akaita.android.circularseekbar.CircularSeekBar;
import java.text.DecimalFormat;
import android.app.Activity;
import android.hardware.ConsumerIrManager;
import android.os.Bundle;
import android.view.View;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private final static String CHANNEL_7 =
"0000 006d 0036 0000 0002 002c 0006 000b 0006 000b 0006 000b 0006 000a 0008 000a 0008 000a 0008 000a 0008 0015 0006 000b 0006 000b 0006 000b 0006 0017 0006 0017 0006 0015 0008 0015 0006 0017 0006 098d 0004 002a 0008 000a 0006 000b 0006 000b 0006 000b 0006 000b 0006 000b 0006 000b 0006 0017 0006 000a 0008 000a 0008 000b 0006 0015 0006 0017 0006 0017 0006 0017 0006 0015 0006 0978 0004 002c 0006 000a 0008 000a 0008 000a 0008 000a 0008 000a 0008 000a 0006 000b 0006 0017 0006 000b 0006 000b 0006 000b 0006 0017 0006 0017 0006 0015 0008 0015 0006 0017 0006 09Ba";
private ConsumerIrManager irManager;
private CircularSeekBar seekBar1;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
irManager = (ConsumerIrManager) getSystemService(CONSUMER_IR_SERVICE);
textView = (TextView) findViewById(R.id.textView);
seekBar1 = (CircularSeekBar) findViewById(R.id.seekBar1);
CircularSeekBar seekBar1 = (CircularSeekBar)findViewById(R.id.seekBar1);
seekBar1.setProgressTextFormat(new DecimalFormat("#"));
CircularSeekBar seekBar2 = (CircularSeekBar)findViewById(R.id.seekBar2);
seekBar2.setProgressTextFormat(new DecimalFormat("#"));
seekBar1.setOnCircularSeekBarChangeListener(new CircularSeekBar.OnCircularSeekBarChangeListener() {
@Override
public void onProgressChanged(CircularSeekBar seekBar1, float progress, boolean fromUser) {
int b = Math.round(progress);
if (b== 01)
hex2ir(CHANNEL_7);
}
@Override
public void onStartTrackingTouch(CircularSeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(CircularSeekBar seekBar) {
}
});
}
private IRCommand hex2ir(final String irData) {
List<String> list = new ArrayList<String>(Arrays.asList(irData.split(" ")));
list.remove(0); // dummy
int frequency = Integer.parseInt(list.remove(0), 16); // frequency
list.remove(0); // seq1
list.remove(0); // seq2
frequency = (int) (1000000 / (frequency * 0.241246));
int pulses = 1000000 / frequency;
int count;
int[] pattern = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
count = Integer.parseInt(list.get(i), 16);
pattern[i] = count * pulses;
}
return new IRCommand(frequency, pattern);
}
private class ClickListener implements View.OnClickListener {
public final IRCommand cmd;
public ClickListener(final IRCommand cmd) {
this.cmd = cmd;
}
@Override
public void onClick(final View view) {
android.util.Log.d("Remote", "frequency: " + cmd.freq);
android.util.Log.d("Remote", "pattern: " + Arrays.toString(cmd.pattern));
irManager.transmit(cmd.freq, cmd.pattern);
}
}
private class IRCommand {
private final int freq;
private final int[] pattern;
private IRCommand(int freq, int[] pattern) {
this.freq = freq;
this.pattern = pattern;
}
}
}
Alles anzeigen
Ich denke man muss private class ClicckListener implement View.OnClicklistener ändern. Ich bin auf eure Vorschäge gespannt. Wie wäre es möglich den Code so umändern, damit er mit dem SeekBar funktioniert.