欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Android 通用型手电筒代码,android通用型,用相机功能来实现的,大部

来源: javaer 分享于  点击 17930 次 点评:215

Android 通用型手电筒代码,android通用型,用相机功能来实现的,大部


用相机功能来实现的,大部分机型都支持。MainActivity.class ```javapublic class MainActivity extends FragmentActivity {

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    if (isFlashSupported()) {        if (savedInstanceState == null) {            getSupportFragmentManager().beginTransaction().add(R.id.container, new FlashlightFragment()).commit();        }    } else {        showNoFlashAlert();    }}private void showNoFlashAlert() {    new AlertDialog.Builder(this)            .setMessage(R.string.device_not_support_msg)            .setIcon(android.R.drawable.ic_dialog_alert).setTitle(R.string.device_not_support_title)            .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {                @Override                public void onClick(DialogInterface dialog, int which) {                    dialog.dismiss();                    finish();                }            }).create().show();}private boolean isFlashSupported() {    PackageManager pm = getPackageManager();    return pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);}public static class FlashlightFragment extends Fragment implements SurfaceHolder.Callback {    public FlashlightFragment() { }    ImageButton btnSwitch;    ImageView bg;    private boolean isLighOn = false;    private Camera camera;    Camera.Parameters params;    @Override    public void onStart() {        super.onStart();        SurfaceView preview = (SurfaceView) getView().findViewById(R.id.PREVIEW);        SurfaceHolder mHolder = preview.getHolder();        mHolder.addCallback(this);    }    @Override    public void onPause() {        super.onPause();        turnOffFlash();    }    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.fragment_main_activity, container, false);        // flash switch button        btnSwitch = (ImageButton) view.findViewById(R.id.flashlight_button);        bg = (ImageView) view.findViewById(R.id.flashlight_bg);        // displaying button image        toggleBgImage();        // Switch button click event to toggle flash on/off        btnSwitch.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (isLighOn) {                    turnOffFlash();                } else {                    turnOnFlash();                }            }        });        return view;    }    // Turning On flash    private void turnOnFlash() {        if (!isLighOn) {            if (camera == null || params == null) {                return;            }            params = camera.getParameters();            params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);            camera.setParameters(params);            camera.startPreview();            isLighOn = true;            toggleBgImage();        }    }    // Turning Off flash    private void turnOffFlash() {        if (isLighOn) {            if (camera == null || params == null) {                return;            }            params = camera.getParameters();            params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);            camera.setParameters(params);            camera.stopPreview();            isLighOn = false;            toggleBgImage();        }    }    private void toggleBgImage() {        if (isLighOn) {            bg.setImageResource(R.mipmap.f_on);        } else {            bg.setImageResource(R.mipmap.f_off);        }    }    @Override    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {    }    @Override    public void surfaceDestroyed(SurfaceHolder holder) {        if (camera != null) {            camera.stopPreview();            camera.setPreviewCallback(null);            camera.release();            camera = null;        }    }    @Override    public void surfaceCreated(SurfaceHolder holder) {        if (camera == null) {            camera = Camera.open();            params = camera.getParameters();            try {                camera.setPreviewDisplay(holder);            } catch (IOException e) {                camera.release();                camera = null;            }        }        turnOnFlash();    }}

}fragment_main_activity.xmlxml<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" >

<SurfaceView    android:id="@+id/PREVIEW"    android:layout_width="1dp"    android:layout_height="1dp"/><ImageView    android:id="@+id/flashlight_bg"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:src="@mipmap/f_on"    android:scaleType="centerCrop"    /><ImageButton    android:id="@+id/flashlight_button"    android:layout_width="100dp"    android:layout_height="200dp"    android:layout_centerInParent="true"    android:background="@android:color/transparent"    android:text="fuck"/>

</RelativeLayout>activity_main.xmlxml<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" />

AndroidManifest.xmlxml<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.liujinghuiuncleapp.app.tool.flashlight" >

<uses-permission android:name="android.permission.CAMERA" /><uses-permission android:name="android.permission.FLASHLIGHT" /><uses-feature android:name="android.hardware.camera" /><uses-feature android:name="android.hardware.camera.flash" /><application    android:allowBackup="true"    android:icon="@mipmap/ic_launcher"    android:theme="@style/AppTheme"    android:label="@string/app_name" >    <activity        android:name=".MainActivity"        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>

</manifest>

```

相关栏目:

用户点评