Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.90 KB | None | 0 0
  1. import android.graphics.Bitmap;
  2. import android.graphics.BitmapFactory;
  3. import android.hardware.Camera;
  4. import android.os.Build;
  5. import android.os.Bundle;
  6. import android.support.v4.app.Fragment;
  7. import android.support.v4.view.ViewPager;
  8. import android.util.Log;
  9. import android.view.LayoutInflater;
  10. import android.view.SurfaceHolder;
  11. import android.view.SurfaceView;
  12. import android.view.View;
  13. import android.view.ViewGroup;
  14. import android.widget.ImageButton;
  15. import android.widget.LinearLayout;
  16. import android.widget.TextView;
  17.  
  18. import java.io.IOException;
  19. import java.io.OutputStream;
  20.  
  21. /**
  22. * Created by Gebruiker on 29-10-2014.
  23. */
  24. public class SecondFragment extends Fragment {
  25.  
  26. View rootView;
  27. ImageButton cameraShootButton;
  28. ImageButton cameraChangeButton;
  29. ImageButton cameraFlitsButton;
  30. ImageButton timelineButton;
  31. ImageButton profileButton;
  32. ViewPager mViewPager;
  33. Boolean switching = false;
  34. View.OnClickListener tapper = null;
  35. SurfaceView cameraPreview = null;
  36. SurfaceHolder cameraPreviewHolder = null;
  37. Camera camera = null;
  38. boolean inPreview = false;
  39. boolean cameraConfigured = false;
  40. Integer currentCamera;
  41.  
  42. public static SecondFragment newInstance(String text) {
  43.  
  44. SecondFragment f = new SecondFragment();
  45. Bundle b = new Bundle();
  46. b.putString("msg", text);
  47.  
  48. f.setArguments(b);
  49.  
  50. return f;
  51. }
  52.  
  53. @Override
  54. public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  55. rootView = inflater.inflate(R.layout.second_frag, container, false);
  56.  
  57. timelineButton = (ImageButton) rootView.findViewById(R.id.timelineB);
  58. profileButton = (ImageButton) rootView.findViewById(R.id.profileB);
  59.  
  60. cameraShootButton = (ImageButton) rootView.findViewById(R.id.captureB);
  61. cameraChangeButton = (ImageButton) rootView.findViewById(R.id.changeCameraB);
  62. cameraFlitsButton = (ImageButton) rootView.findViewById(R.id.flitserB);
  63. cameraPreview = (SurfaceView) rootView.findViewById(R.id.cameraView);
  64.  
  65. cameraPreviewHolder = cameraPreview.getHolder();
  66. cameraPreviewHolder.addCallback(surfaceCallback);
  67. cameraPreviewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
  68. mViewPager = (ViewPager) getActivity().findViewById(R.id.viewPager);
  69.  
  70. tapper = new View.OnClickListener() {
  71. @Override
  72. public void onClick(View v) {
  73. if (v.getId() == R.id.timelineB) {
  74. mViewPager.setCurrentItem(0);
  75. } else if (v.getId() == R.id.captureB) {
  76. camera.takePicture(ShutterCallback, PictureCallbackRaw, null, PictureCallbackJpeg);
  77. } else if(v.getId() == R.id.profileB){
  78. mViewPager.setCurrentItem(2);
  79. } else if (v.getId() == R.id.changeCameraB) {
  80. if (switching == true){
  81. return;
  82. }
  83. changeCamera();
  84. } else if (v.getId() == R.id.flitserB){
  85.  
  86. }
  87. }
  88. };
  89.  
  90. cameraShootButton.setOnClickListener(tapper);
  91. cameraChangeButton.setOnClickListener(tapper);
  92. cameraFlitsButton.setOnClickListener(tapper);
  93. timelineButton.setOnClickListener(tapper);
  94. profileButton.setOnClickListener(tapper);
  95. return rootView;
  96. }
  97.  
  98. @Override
  99. public void onResume() {
  100. super.onResume();
  101. camera = getCamera("back");
  102. currentCamera = 1;
  103. startPreview();
  104. }
  105.  
  106. @Override
  107. public void onPause() {
  108. if (inPreview) {
  109. camera.stopPreview();
  110. }
  111. camera.release();
  112. camera = null;
  113. inPreview = false;
  114.  
  115. super.onPause();
  116. }
  117.  
  118. private Camera.Size getBestPreviewSize(int width, int height,
  119. Camera.Parameters parameters) {
  120. Camera.Size result = null;
  121.  
  122. for (Camera.Size size : parameters.getSupportedPreviewSizes()) {
  123. if (size.width <= width && size.height <= height) {
  124. if (result == null) {
  125. result = size;
  126. } else {
  127. int resultArea = result.width * result.height;
  128. int newArea = size.width * size.height;
  129.  
  130. if (newArea > resultArea) {
  131. result = size;
  132. }
  133. }
  134. }
  135. }
  136.  
  137. return (result);
  138. }
  139.  
  140. private void initPreview(int width, int height) {
  141. if (camera != null && cameraPreviewHolder.getSurface() != null) {
  142. try {
  143. camera.setPreviewDisplay(cameraPreviewHolder);
  144. } catch (Throwable t) {
  145. Log.e("PreviewDemo-surfaceCallback",
  146. "Exception in setPreviewDisplay()", t);
  147. }
  148.  
  149. if (!cameraConfigured) {
  150. Camera.Parameters parameters = camera.getParameters();
  151. Log.v("CAMERA", parameters.toString());
  152. Camera.Size size = getBestPreviewSize(width, height,
  153. parameters);
  154.  
  155. if (size != null) {
  156. Log.v("CameraPreviewHeight", ""+cameraPreview.getMeasuredHeight());
  157. Log.v("CameraRES", size.width + " " + size.height);
  158. parameters.setPreviewSize(size.width, size.height);
  159. camera.setParameters(parameters);
  160. cameraConfigured = true;
  161. }
  162. }
  163. }
  164. }
  165.  
  166. private void startPreview() {
  167. if (cameraConfigured && camera != null) {
  168. camera.startPreview();
  169. inPreview = true;
  170. camera.setDisplayOrientation(90);
  171. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
  172. camera.enableShutterSound(false);
  173. }
  174. }
  175. }
  176.  
  177. private void changeCamera() {
  178. switching = true;
  179. if (inPreview) {
  180. camera.stopPreview();
  181. camera.setPreviewCallback(null);
  182. }
  183. camera.release();
  184. camera = null;
  185. inPreview = false;
  186. if (currentCamera==1){
  187. camera = getCamera("front");
  188. currentCamera =2;
  189. }
  190. else{
  191. camera = getCamera("back");
  192. currentCamera = 1;
  193. }
  194. camera.setDisplayOrientation(90);
  195. try {
  196. camera.setPreviewDisplay(cameraPreviewHolder);
  197. cameraPreviewHolder.addCallback(surfaceCallback);
  198. camera.startPreview();
  199. } catch (IOException e) {
  200. e.printStackTrace();
  201. }
  202.  
  203. inPreview = true;
  204.  
  205. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
  206. camera.enableShutterSound(false);
  207. }
  208. switching = false;
  209.  
  210. }
  211.  
  212. SurfaceHolder.Callback surfaceCallback = new SurfaceHolder.Callback() {
  213. public void surfaceCreated(SurfaceHolder holder) {
  214. // no-op -- wait until surfaceChanged()
  215. }
  216.  
  217. public void surfaceChanged(SurfaceHolder holder,
  218. int format, int width,
  219. int height) {
  220. initPreview(width, height);
  221. startPreview();
  222. }
  223.  
  224. public void surfaceDestroyed(SurfaceHolder holder) {
  225. // no-op
  226. }
  227. };
  228.  
  229. Camera.ShutterCallback ShutterCallback = new Camera.ShutterCallback() {
  230. public void surfaceCreated(SurfaceHolder holder) {
  231. // no-op -- wait until surfaceChanged()
  232. }
  233.  
  234. public void surfaceChanged(SurfaceHolder holder,
  235. int format, int width,
  236. int height) {
  237. initPreview(width, height);
  238. startPreview();
  239. }
  240.  
  241. public void surfaceDestroyed(SurfaceHolder holder) {
  242. // no-op
  243. }
  244.  
  245. @Override
  246. public void onShutter() {
  247.  
  248. }
  249. };
  250.  
  251. Camera.PictureCallback PictureCallbackRaw = new Camera.PictureCallback() {
  252. public void surfaceCreated(SurfaceHolder holder) {
  253. // no-op -- wait until surfaceChanged()
  254. }
  255.  
  256. public void surfaceChanged(SurfaceHolder holder,
  257. int format, int width,
  258. int height) {
  259. initPreview(width, height);
  260. startPreview();
  261. }
  262.  
  263. public void surfaceDestroyed(SurfaceHolder holder) {
  264. // no-op
  265. }
  266.  
  267. @Override
  268. public void onPictureTaken(byte[] data, Camera camera) {
  269.  
  270. }
  271. };
  272.  
  273. Camera.PictureCallback PictureCallbackJpeg = new Camera.PictureCallback() {
  274. public void surfaceCreated(SurfaceHolder holder) {
  275. // no-op -- wait until surfaceChanged()
  276. }
  277.  
  278. public void surfaceChanged(SurfaceHolder holder,
  279. int format, int width,
  280. int height) {
  281. initPreview(width, height);
  282. startPreview();
  283. }
  284.  
  285. public void surfaceDestroyed(SurfaceHolder holder) {
  286. // no-op
  287. }
  288.  
  289. @Override
  290. public void onPictureTaken(byte[] byteData, Camera camera) {
  291. BitmapFactory.Options options = new BitmapFactory.Options();
  292. options.inSampleSize = 5;
  293. OutputStream bos = null;
  294. Bitmap m = BitmapFactory.decodeByteArray(byteData, 0, byteData.length, options);
  295.  
  296. //m.compress(Bitmap.CompressFormat.PNG, 75, bos);
  297. //Log.v("CAPTURED", ""+bos);
  298. }
  299. };
  300.  
  301. private Camera getCamera(String getCamera) {
  302. int cameraCount = 0;
  303. Camera cam = null;
  304. Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
  305. cameraCount = Camera.getNumberOfCameras();
  306. for (int camIdx = 0; camIdx < cameraCount; camIdx++) {
  307. Camera.getCameraInfo(camIdx, cameraInfo);
  308. if ((cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) && (getCamera == "front")) {
  309. try {
  310. cam = Camera.open(camIdx);
  311. } catch (RuntimeException e) {
  312. Log.e("TEST", "Camera failed to open: " + e.getLocalizedMessage());
  313. }
  314. }
  315. else if ((cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) && (getCamera == "back")) {
  316. try {
  317. cam = Camera.open(camIdx);
  318. } catch (RuntimeException e) {
  319. Log.e("TEST", "Camera failed to open: " + e.getLocalizedMessage());
  320. }
  321. }
  322. }
  323. return cam;
  324. }
  325.  
  326.  
  327. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement