Private Class für SeekBar ändern?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Private Class für SeekBar ändern?

    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:

    Java-Quellcode

    1. import android.graphics.Color;
    2. import android.os.Bundle;
    3. import android.support.v7.app.AppCompatActivity;
    4. import android.util.SparseArray;
    5. import android.view.View;
    6. import android.widget.TextView;
    7. import android.widget.Toast;
    8. import com.akaita.android.circularseekbar.CircularSeekBar;
    9. import java.lang.reflect.InvocationTargetException;
    10. import java.lang.reflect.Method;
    11. import android.content.Context;
    12. import com.akaita.android.circularseekbar.CircularSeekBar;
    13. import java.text.DecimalFormat;
    14. import android.app.Activity;
    15. import android.hardware.ConsumerIrManager;
    16. import android.os.Bundle;
    17. import android.view.View;
    18. import java.util.ArrayList;
    19. import java.util.Arrays;
    20. import java.util.List;
    21. public class MainActivity extends AppCompatActivity {
    22. private final static String CHANNEL_7 =
    23. "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";
    24. private ConsumerIrManager irManager;
    25. private CircularSeekBar seekBar1;
    26. private TextView textView;
    27. @Override
    28. protected void onCreate(Bundle savedInstanceState) {
    29. super.onCreate(savedInstanceState);
    30. setContentView(R.layout.main);
    31. irManager = (ConsumerIrManager) getSystemService(CONSUMER_IR_SERVICE);
    32. textView = (TextView) findViewById(R.id.textView);
    33. seekBar1 = (CircularSeekBar) findViewById(R.id.seekBar1);
    34. CircularSeekBar seekBar1 = (CircularSeekBar)findViewById(R.id.seekBar1);
    35. seekBar1.setProgressTextFormat(new DecimalFormat("#"));
    36. CircularSeekBar seekBar2 = (CircularSeekBar)findViewById(R.id.seekBar2);
    37. seekBar2.setProgressTextFormat(new DecimalFormat("#"));
    38. seekBar1.setOnCircularSeekBarChangeListener(new CircularSeekBar.OnCircularSeekBarChangeListener() {
    39. @Override
    40. public void onProgressChanged(CircularSeekBar seekBar1, float progress, boolean fromUser) {
    41. int b = Math.round(progress);
    42. if (b== 01)
    43. hex2ir(CHANNEL_7);
    44. }
    45. @Override
    46. public void onStartTrackingTouch(CircularSeekBar seekBar) {
    47. }
    48. @Override
    49. public void onStopTrackingTouch(CircularSeekBar seekBar) {
    50. }
    51. });
    52. }
    53. private IRCommand hex2ir(final String irData) {
    54. List<String> list = new ArrayList<String>(Arrays.asList(irData.split(" ")));
    55. list.remove(0); // dummy
    56. int frequency = Integer.parseInt(list.remove(0), 16); // frequency
    57. list.remove(0); // seq1
    58. list.remove(0); // seq2
    59. frequency = (int) (1000000 / (frequency * 0.241246));
    60. int pulses = 1000000 / frequency;
    61. int count;
    62. int[] pattern = new int[list.size()];
    63. for (int i = 0; i < list.size(); i++) {
    64. count = Integer.parseInt(list.get(i), 16);
    65. pattern[i] = count * pulses;
    66. }
    67. return new IRCommand(frequency, pattern);
    68. }
    69. private class ClickListener implements View.OnClickListener {
    70. public final IRCommand cmd;
    71. public ClickListener(final IRCommand cmd) {
    72. this.cmd = cmd;
    73. }
    74. @Override
    75. public void onClick(final View view) {
    76. android.util.Log.d("Remote", "frequency: " + cmd.freq);
    77. android.util.Log.d("Remote", "pattern: " + Arrays.toString(cmd.pattern));
    78. irManager.transmit(cmd.freq, cmd.pattern);
    79. }
    80. }
    81. private class IRCommand {
    82. private final int freq;
    83. private final int[] pattern;
    84. private IRCommand(int freq, int[] pattern) {
    85. this.freq = freq;
    86. this.pattern = pattern;
    87. }
    88. }
    89. }
    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. :?: :)
    Dateien
    • code1.txt

      (8,99 kB, 11 mal heruntergeladen, zuletzt: )