2017-01-17 2 views
0

Я хочу создать/сгенерировать QRCode для измененного SeekBar значение для Stream_Ring. Но проблема в том, что я не могу получить/сохранить onProgressChanged метод прогресс значение, которое мне нужно для генерации QR.Невозможно сгенерировать QR-код для измененного значения SeekBar в android

Я попытался выяснить проблему, но не смог это сделать. Я загружаю весь код генерации QR для вашего удобства.

Button gene; 
    ImageView image; 
    SeekBar ring_bar; 
    String collect; 
    private AudioManager am; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_prof); 

     gene = (Button) findViewById(R.id.gene); 
     image = (ImageView) findViewById(R.id.image); 
     ring_bar = (SeekBar) findViewById(R.id.ring_bar); 
     am = (AudioManager)getSystemService(Context.AUDIO_SERVICE); 

     int maxV = am.getStreamMaxVolume(AudioManager.STREAM_RING); 
     int curV = am.getStreamVolume(AudioManager.STREAM_RING); 
     ring_bar.setMax(maxV); 
     ring_bar.setProgress(curV); 
     ring_bar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
      @Override 
      public void onStopTrackingTouch(SeekBar arg0) { 
      } 

      @Override 
      public void onStartTrackingTouch(SeekBar arg0) { 
      } 

      @Override 
      public void onProgressChanged(SeekBar arg0, int progress, boolean arg2) { 
       am.setStreamVolume(AudioManager.STREAM_RING, progress, 0); 
      } 
     }); 

     int ring = ring_bar.getProgress(); 

     String ringgg = Integer.toString(ring); 

     collect = ringgg; 

     gene.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       MultiFormatWriter multiFormatWriter = new MultiFormatWriter(); 
       try{ 
        BitMatrix bitMatrix = multiFormatWriter.encode(collect, BarcodeFormat.QR_CODE,200,200); 
        BarcodeEncoder barcodeEncoder = new BarcodeEncoder(); 
        Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix); 
        image.setImageBitmap(bitmap); 
       } 
       catch (WriterException e){ 
        e.printStackTrace(); 
       } 

      } 
     }); 
    } 

} 

ответ

0

Проблема заключалась в том, что я сохранял прогресс в onCreate, но после этого я никогда не обновлял значение. Чтобы создать QR для текущего значения, мне пришлось вызвать getProgress() в onClickListener, который вернул мне текущее значение индикатора выполнения.

gene.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View view) { 

    MultiFormatWriter multiFormatWriter = new MultiFormatWriter(); 
    try{ 
     int ringtoneVolumeValue = ring_bar.getProgress(); 
     String ringtoneVolume = Integer.toString(ringtoneVolumeValue); 
     BitMatrix bitMatrix = multiFormatWriter.encode(ringtoneVolume, BarcodeFormat.QR_CODE,200,200); 
     //.... 
    } 
    catch (WriterException e){ 
     e.printStackTrace(); 
    } 

} 

});

Смежные вопросы