2016-04-15 55 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);