【问题标题】:Unable to generate QR Code for changed SeekBar value in android无法为 android 中更改的 SeekBar 值生成 QR 码
【发布时间】:2017-01-17 00:47:30
【问题描述】:

我想为Stream_Ring 的更改后的SeekBar 值创建/生成QRCode。但问题是我无法获取/保存生成 QR 所需的 onProgressChanged 方法的 progress 值。

我试图找出问题,但无法做到。为了您的方便,我正在上传整个 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();
                }

            }
        });
    }

}

【问题讨论】:

    标签: android qr-code seekbar android-audiomanager


    【解决方案1】:

    问题是,我在 onCreate 中保存了进度,但在那之后我从未更新过该值。为了为当前值创建 QR,我必须在 onClickListener 中调用 getProgress(),它返回了进度条的当前值。

    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();
        }
    
    }
    

    });

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-24
      • 2023-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-20
      相关资源
      最近更新 更多