2016-11-04 9 views
0

Я проверил, поддерживает ли устройство флеш-память, и я сделал оператор if, после чего я получаю сообщение об ошибке. Кто-нибудь знает решение для этого? Он говорит, что hasFlash - неизвестный класс.После проверки того, поддерживает ли устройство фонарик, не удается установить значение boolean внутри оператора if

import android.content.DialogInterface; 
import android.content.pm.PackageManager; 
import android.hardware.camera2.CameraManager; 
import android.provider.Settings; 
import android.support.v7.app.AlertDialog; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.ImageButton; 


import static android.content.DialogInterface.*; 

public class Flashlight extends AppCompatActivity { 
private CameraManager cm; 
private ImageButton flashlightButton; 
private boolean flashlightOnOrOff; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_flashlight); 
    flashlightButton = (ImageButton) findViewById(R.id.flashOnOffButton); 
    flashlightOnOrOff = false; 
} 

//Error if device does not have flashlight 
boolean hasFlash = this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH); 
//This is where i get the error 
if(hasFlash==false) 

{ 
    AlertDialog dialo = new AlertDialog.Builder(Flashlight.this).create(); 
    dialo.setTitle("Error"); 
    dialo.setMessage("Sorry your device does not have flashlight"); 
    dialo.setButton(BUTTON_POSITIVE, "OK", new OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialogInterface, int i) { 
      finish(); 
     } 
    }); 
    dialo.show(); 


} 




//What flashlight does on Stop 
@Override 
protected void onStop() { 
    super.onStop(); 
} 

//What flashlight does on Pause 
@Override 
protected void onPause() { 
    super.onPause(); 
} 

//What flashlight does on Resume 
@Override 
protected void onPostResume() { 
    super.onPostResume(); 
} 

}

+1

Какая ошибка? – iheanyi

+0

'hasFlash == false' может быть упрощено до'! HasFlash' –

+0

Имеет многоэлементные эррос в той же строке: 1. Неожиданный токен 2.Unknown класс 'hasFlash 3. Ожидаемое значение – Kenertj

ответ

1

Код идет не в функции. Вы хотели поставить это в свой onCreate? Если это так, то ваша закрывающая скобка находится не в том месте:

@Override protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_flashlight); 
    flashlightButton = (ImageButton) findViewById(R.id.flashOnOffButton); 
    flashlightOnOrOff = false; 
} // REMOVE THIS 

//Error if device does not have flashlight 
    boolean hasFlash = this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH); 
    if(hasFlash==false) 
    { 
     AlertDialog dialo = new AlertDialog.Builder(Flashlight.this).create(); 
     dialo.setTitle("Error"); 
     dialo.setMessage("Sorry your device does not have flashlight"); 
     dialo.setButton(BUTTON_POSITIVE, "OK", new OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialogInterface, int i) { 
       finish(); 
      } 
     }); 
     dialo.show(); 
    } 
} // THIS IS WHERE YOUR ONCREATE CLOSING BRACE GOES 
+0

Это исправило мою проблему, спасибо большое! – Kenertj

-1

Put следующие разрешения на AndroidManifest.xml

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-feature android:name="android.hardware.camera" /> 

Put следующий импорт на верхней части MainActivity.java

package com.stackoverflow.myapplication; 

import android.content.DialogInterface; 
import android.content.pm.PackageManager; 
import android.support.v7.app.AlertDialog; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import static android.content.DialogInterface.BUTTON_POSITIVE; 

public class MainActivity extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     boolean hasFlash = this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH); 
     AlertDialog dlg = new AlertDialog.Builder(this).create(); 
     if (hasFlash) { 
      dlg.setTitle("Done"); 
      dlg.setMessage("Your device does have flashlight"); 
     } 
     else { 
      dlg.setTitle("Error!"); 
      dlg.setMessage("Sorry your device does not have flashlight!"); 
     } 

     dlg.setButton(BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialogInterface, int i) { 
       //finish(); 
      } 
     }); 
    dlg.show(); 
    } 

} 

Для получения более подробной информации смотрите на here

+0

Спасибо за ответ, но у меня уже есть эти 2 в AndroidManifest. – Kenertj

+0

добавьте инструкцию import выше MainActivity.java перед использованием функций. –

+0

Ошибка явно не с разрешениями или импортом. – iheanyi

0

Попробуйте

hasFlash = getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH); 

if (!hasFlash) {  
// device doesn't support flash  
// Show alert message and close the application 

    AlertDialog alert = new AlertDialog.Builder(MainActivity.this).create();  
    alert.setTitle("Error");  
    alert.setMessage("Sorry, your device doesn't support flash light!"); 

    alert.setButton("OK", new DialogInterface.OnClickListener() {  
    public void onClick(DialogInterface dialog, int which) { 

     // closing the application  
     finish();  
    } 

    }); 

    alert.show();  
    return; 

} 
+0

Как это решить проблему? – iheanyi