2012-12-11 44 views
0

我已经创建了一个手电筒应用程序......一切工作正常......除了每当手电筒开着,我按下后退按钮......它仍然保持开启状态。 ..并不停止...怎么办?..我已经使用了onpause方法,但它似乎并没有工作...当我按下返回按钮时,手电筒不会关闭

此外,我会很感激,如果有人能解释我使用参数。我已经从这个程序的在线来源获得帮助。我不明白参数方法...有人可以详细解释它吗? 在此先感谢.... :)

我的XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/RelativeLayout1" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:background="@drawable/aaaaaaa" 
tools:context=".Flash" > 

<ImageButton 
    android:id="@+id/ib2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:src="@drawable/ic_launcher" /></RelativeLayout> 

我Flash.java:

package com.potapptoes.flashlight; 

    import android.os.Bundle; 
    import android.os.PowerManager; 
    import android.os.PowerManager.WakeLock; 
    import android.app.Activity; 
    import android.content.Context; 
    import android.hardware.Camera; 
    import android.hardware.Camera.Parameters; 
    import android.view.View; 
    import android.view.View.OnClickListener; 
    import android.view.Window; 
    import android.view.WindowManager; 
    import android.widget.ImageButton; 

    public class Flash extends Activity implements OnClickListener { 
Camera cam = null; 
ImageButton ib1; 
Parameters para; 
PowerManager pm; 
WakeLock wl; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
    wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "whatever"); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    wl.acquire(); 
    initialize(); 
    ib1.setOnClickListener(this); 
} 

private void initialize() { 
    // TODO Auto-generated method stub 
    ib1 = (ImageButton) findViewById(R.id.ib2); 
} 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    if (cam == null) { 
     cam = Camera.open(); 
     para = cam.getParameters(); 
     para.setFlashMode(Parameters.FLASH_MODE_TORCH); 
     cam.setParameters(para); 
    } else { 
     para.setFlashMode(Parameters.FLASH_MODE_OFF); 
     cam.setParameters(para); 
     cam.release(); 
     cam = null; 

    } 
} 

@Override 
protected void onPause() { 
    // TODO Auto-generated method stub 
    super.onPause(); 
    wl.release(); 
    finish(); 
} 
    } 

清单:

<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.potapptoes.flashlight" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="16" /> 
<uses-permission android:name="android.permission.CAMERA"/> 
<uses-permission android:name="android.permission.WAKE_LOCK"/> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.potapptoes.flashlight.Flash" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

回答

1

你可以试试这个

para.setFlashMode(Parameters.FLASH_MODE_OFF); 
     cam.setParameters(para); 
     cam.release(); 
     cam = null; 

onpause或也许在onBackPressed,看看它是否工作。

+0

非常感谢穿心莲内酯塞尔瓦....它的工作!!:d – renupok92

+0

很高兴它的工作:)但是,不要忘了一个条件,围绕它来检查闪光灯是否开启或关闭状态。 :) –

+0

我还有一个问题 – renupok92

0

只需使用你的工作代码以关闭手电筒的onPause()。

相关问题