手电筒实施无效

时间:2016-09-09 19:53:20

标签: android

我正在尝试在我的应用中实现flashligth。因为它是一个更大的程序的一部分,我创建了另一个活动,即flash_activity.java,并从另一个片段Tab3意图它。但不幸的是,点击flash_activity中的按钮是打开手电筒没有响应。这是我的Tab3代码,flash_activity。请帮帮我。

package com.example.bavarian.sos;

import android.content.Context;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.content.Intent;


public class Tab3 extends Fragment {
ImageButton imageButton;
private boolean playing = false;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,     Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.tab3, container, false);

    imageButton = (ImageButton) rootView.findViewById(R.id.torch);
    imageButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(getActivity(), Flash_activity.class);
            startActivity(intent);
        }
    });

    return rootView;
}
}

我的Flash_activity.java是:

    package com.example.bavarian.sos;

import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.hardware.Camera;
import android.media.MediaPlayer;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;

public class Flash_activity extends AppCompatActivity {

// private ImageButton btnSwitch;
Button button;
Camera camera;
boolean isFlashOn;
boolean hasFlash;
Camera.Parameters params;
MediaPlayer mp;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_flash_activity);


    //btnSwitch= (ImageButton) findViewById(R.id.torch1);
    button = (Button) findViewById(R.id.button);
    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(Flash_activity.this)
                .create();
        alert.setTitle("Error");
        alert.setMessage("Sorry, your device doesn't support flash light!");
        alert.setButton(DialogInterface.BUTTON_POSITIVE,
                "OK", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {

                    }
                });
        alert.show();
        return;
    }

    // get the camera
    getCamera();

    // displaying button image
    //  toggleButtonImage();


    // Switch button click event to toggle flash on/off
    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (isFlashOn) {
                // turn off flash
                turnOffFlash();
            } else {
                // turn on flash
                turnOnFlash();
            }
        }
    });
}

// Get the camera
private void getCamera() {
    if (camera == null) {
        try {
            camera = Camera.open();
            params = camera.getParameters();
        } catch (RuntimeException e) {
            Log.e("Error. Failed to Open", e.getMessage());
        }
    }
}

// Turning On flash
private void turnOnFlash() {
    if (!isFlashOn) {
        if (camera == null || params == null) {
            return;
        }
        // play sound
        playSound();

        params = camera.getParameters();
        params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
        camera.setParameters(params);
        camera.startPreview();
        isFlashOn = true;

        // changing button/switch image
        //    toggleButtonImage();
    }

}

// Turning Off flash
private void turnOffFlash() {
    if (isFlashOn) {
        if (camera == null || params == null) {
            return;
        }
        // play sound
        playSound();

        params = camera.getParameters();
        params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
        camera.setParameters(params);
        camera.stopPreview();
        isFlashOn = false;

        // changing button/switch image
        //   toggleButtonImage();
    }
}

// Playing sound
// will play button toggle sound on flash on / off
private void playSound() {
    if (isFlashOn) {
        mp = MediaPlayer.create(Flash_activity.this, R.raw.alrm);
    } else {
        mp = MediaPlayer.create(Flash_activity.this, R.raw.alrm);
    }
    mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

        @Override
        public void onCompletion(MediaPlayer mp) {
            // TODO Auto-generated method stub
            mp.release();
        }
    });
    mp.start();
}


/*    private void toggleButtonImage(){
    if(isFlashOn){
        btnSwitch.setImageResource(R.drawable.flash_on);
    }else{
        btnSwitch.setImageResource(R.drawable.flash_off);
    }
}
*/
@Override
protected void onDestroy() {
    super.onDestroy();
}

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

    // on pause turn off the flash
    turnOnFlash();
}

@Override
protected void onRestart() {
    super.onRestart();
}


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

    // on resume turn on the flash
    if (hasFlash)
        turnOffFlash();
}

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

    // on starting the app get the camera params
    getCamera();
}

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

    // on stop release the camera
    if (camera != null) {
        camera.release();
        camera = null;
    }
}

}

我缺少什么......请帮忙

0 个答案:

没有答案