简体   繁体   English

应用程序从用户处获取二进制输入,并在 Android Studio 中按下按钮时闪烁手电筒传输输入

[英]App takes binary Input from user and blinks flashlight transmitting the input when a button is pressed in Android Studio

SO i am trying to create an app that transmits the user input through blinking flash light.所以我正在尝试创建一个应用程序,通过闪烁的闪光灯传输用户输入。 When i use a fixed String myString = "1010101" the flashlight blinks so my app is able to access the flashlight.当我使用固定的 String myString = "1010101" 时,手电筒会闪烁,因此我的应用程序能够访问手电筒。 However, when i take an input from the user and save it in String myString, i press the button but nothing happens.但是,当我从用户那里获取输入并将其保存在 String myString 中时,我按下按钮但没有任何反应。 For now i only want to take binary input.现在我只想采用二进制输入。 Please Help me out.请帮帮我。

EditText binData;
Button blinkMode;
boolean isFlashOn = false;
Camera camera;
String myString;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    camera = camera.open();

    binData = (EditText)findViewById(R.id.editText);
    final Camera.Parameters params = camera.getParameters();
    blinkMode = (Button)findViewById(R.id.button);

    myString = binData.getText().toString();

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

            long blinkDelay = 50; //Delay in ms
            for(int i=0; i<myString.length(); i++){
                if(myString.charAt(i)=='1'){
                    params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
                    camera.setParameters(params);
                    camera.startPreview();
                    isFlashOn = true;


                } else if(myString.charAt(i)=='0') {

                    params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
                    camera.setParameters(params);
                    camera.stopPreview();
                    isFlashOn = false;

                }
                try {
                    Thread.sleep(blinkDelay);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }

            int length=myString.length();
            if(length == myString.length() ) {
                params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
                camera.setParameters(params);
                camera.stopPreview();
                isFlashOn = false;
            }
        }
    });
}

Move this line移动这条线

myString = binData.getText().toString();  

inside the onClick() method.onClick()方法中。 That should ideally fix your issue.理想情况下,这应该可以解决您的问题。 You are accessing the string before the button click is made.您在单击按钮之前访问字符串。 My guess is that empty string was being taken so far.我的猜测是到目前为止正在使用空字符串。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM