2016-04-15 54 views
1

创建一个简单的Torch应用程序,该应用程序可以放在相机闪光灯上并将其关闭。这个应用程序应该有一个简单的用户界面,可以放在Flash上​​,也可以关闭。 连续使用1分钟后,界面会提示用户他想继续使用火炬。如果用户说是,火炬将继续保持一分钟,这个周期应该重复。如果用户说“否”,火炬应该熄灭。我正在制作android中的手电筒应用程序

创建一个简单的火炬应用程序是容易的,我做了火炬的应用程序,但是这是在问题中提到的第二件事,1分钟后那个东西我无法理解任何人都可以帮助做一个提示?

这里是我的手电筒的代码谁能告诉我在哪里,在它改变。

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.content.Context; 
import android.content.pm.PackageManager; 
import android.hardware.Camera; 
import android.hardware.Camera.Parameters; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class MainActivity extends AppCompatActivity 
{ 
    `enter code here`private boolean isLightOn=false; 
    private Camera camera; 
    private Button btn; 


    @Override 
    protected void onStop() 
    { 
     super.onStop(); 

     if(camera!= null) 
      camera.release(); 
    } 



    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     btn=(Button)findViewById(R.id.button); 
     Context context=this; 

     PackageManager pk= context.getPackageManager(); 

     if(!pk.hasSystemFeature(PackageManager.FEATURE_CAMERA)) 
     { 
      Log.e("err","Device has no camera"); 
      return; 
     } 
     camera=camera.open(); 
     final Parameters p= camera.getParameters(); 
     btn.setOnClickListener(new OnClickListener() 
     { 
     @Override 
     public void onClick(View v) 
     { 

      if(isLightOn) 
      { 
       Log.i("info","FlashLight is turn off"); 
       p.setFlashMode(Parameters.FLASH_MODE_OFF); 
       camera.setParameters(p); 
       camera.stopPreview(); 
       isLightOn=false; 

      } 
      else 
      { 
       Log.i("info","FlashLight is turn On!"); 
       p.setFlashMode(Parameters.FLASH_MODE_TORCH); 
       camera.setParameters(p); 
       camera.startPreview(); 
       isLightOn=true; 

      } 
     } 

     }); 

    } 
} 
+0

你读过那篇关于警报管理器和警报对话框? – Yashasvi

回答

0
 if(!pk.hasSystemFeature(PackageManager.FEATURE_CAMERA)) 
      { 
       Log.e("err","Device has no camera"); 
       return; 
      } 
      camera=camera.open(); 
      final Parameters p= camera.getParameters(); 
      btn.setOnClickListener(new OnClickListener() 
      { 
      @Override 
      public void onClick(View v) 
      { 

       if(isLightOn) 
       { 
        Log.i("info","FlashLight is turn off"); 
        p.setFlashMode(Parameters.FLASH_MODE_OFF); 
        camera.setParameters(p); 
        camera.stopPreview(); 
        isLightOn=false; 

       } 
       else 
       { 
        Log.i("info","FlashLight is turn On!"); 
        p.setFlashMode(Parameters.FLASH_MODE_TORCH); 
        camera.setParameters(p); 
        camera.startPreview(); 
        isLightOn=true; 
    new Handler().postDelayed(new Runnable() { 
         // Using handler with postDelayed called runnable run method 
         @Override 
         public void run() { 
     //Show your Alert box here 
     new AlertDialog.Builder(context) // you can use getApplicationContext() or your activityname.this as context 
      .setTitle("Do You Want to continue") 
      .setMessage("Are you sure you want to continue?") 
      .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        //Do nothing, Torch continues 
       } 
      }) 
      .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        // torch off 
Log.i("info","FlashLight is turn off"); 
       p.setFlashMode(Parameters.FLASH_MODE_OFF); 
       camera.setParameters(p); 
       camera.stopPreview(); 
       isLightOn=false; 
       } 
      }) 
      .setIcon(android.R.drawable.ic_dialog_alert) 
      .show(); 

     } 
        }, 60000); //60000milliseconds = 60 sec = 1min. 

     // It will show alertbox after 1 min . 

       } 
      } 

      }); 

     } 
    } 
+0

我上传了手电筒应用程序的代码,你能告诉我应该在哪里做更改 –

+0

好吧。等待。我会帮助。请给我一些时间。 –

+0

解答已更新。 –

0

在一定的延迟后运行一些代码,你可以做以下(其中1000以毫秒为单位的延迟):

new Handler().postDelayed(new Runnable() 
{ 
    @Override 
    public void run() 
    { 
     // code to show prompt goes here 
    } 
}, 1000); 

可以做成一个方法,它被称为每本用户确认提示的时间。

0

对于对话框检查this

检查this链接,闪光灯开/关。

的闪光灯关闭1分钟使用处理程序之后。

Handler handler = new Handler(); 

final Runnable r = new Runnable() { 
    public void run() { 
     //Turn off flash 
    } 
}; 

handler.postDelayed(r, 1000);