MainActivity.java
Go to the documentation of this file.
00001 /*
00002  * Copyright (C) 2011 Google Inc.
00003  * 
00004  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
00005  * use this file except in compliance with the License. You may obtain a copy of
00006  * the License at
00007  * 
00008  * http://www.apache.org/licenses/LICENSE-2.0
00009  * 
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
00012  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
00013  * License for the specific language governing permissions and limitations under
00014  * the License.
00015  */
00016 
00017 package org.ros.android.android_camera_viewer;
00018 
00019 import android.hardware.Camera;
00020 import android.os.Bundle;
00021 import android.view.MotionEvent;
00022 import android.view.Window;
00023 import android.view.WindowManager;
00024 import android.widget.Toast;
00025 import org.ros.address.InetAddressFactory;
00026 import org.ros.address.InetAddressFactory;
00027 import org.ros.android.BitmapFromCompressedImage;
00028 import org.ros.android.view.RosImageView;
00029 import org.ros.android.RosActivity;
00030 import org.ros.android.view.camera.RosCameraPreviewView;
00031 import org.ros.node.NodeConfiguration;
00032 import org.ros.node.NodeMainExecutor;
00033 //add
00034 import android.os.IBinder;
00035 import android.content.ComponentName;
00036 import android.content.Intent;
00037 import android.content.ServiceConnection;
00038 import java.net.URI;
00039 import java.net.URISyntaxException;
00040 import android.content.Context;
00041 import android.util.Log;
00042 
00047 public class MainActivity extends RosActivity {
00048     
00049     //add
00050     private URI masterUri;
00051     private Intent intent;
00052     private AndroidAudioRecordService myService;
00053     private String package_name;
00054 
00055 
00056     private int cameraId;
00057     private RosCameraPreviewView rosCameraPreviewView;
00058     private RosImageView<sensor_msgs.CompressedImage> image;
00059 
00060 
00061 
00062     //add
00063         ServiceConnection serviceConnection = new ServiceConnection(){
00064 
00065             @Override
00066                 public void onServiceConnected(ComponentName name,IBinder service){
00067                 myService = ((AndroidAudioRecordService.MyBinder)service).getService();
00068                 startService(intent);
00069                 myService.setNode(package_name);
00070             }
00071 
00072             @Override
00073                 public void onServiceDisconnected(ComponentName name){
00074                 myService = null;
00075             }
00076         };
00077 
00078 
00079 
00080   public MainActivity() {
00081     super("ROS Camera Viewer", "ROS Camera Viewer");
00082   }
00083 
00084 
00085   @Override
00086   protected void onCreate(Bundle savedInstanceState) {
00087     super.onCreate(savedInstanceState);
00088     //    requestWindowFeature(Window.FEATURE_NO_TITLE);
00089     getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
00090     setContentView(R.layout.main);
00091     rosCameraPreviewView = (RosCameraPreviewView) findViewById(R.id.ros_camera_preview_view);
00092 
00093     image = (RosImageView<sensor_msgs.CompressedImage>) findViewById(R.id.image);
00094     image.setTopicName("/usb_cam/image_raw/compressed");
00095     image.setMessageType(sensor_msgs.CompressedImage._TYPE);
00096     image.setMessageToBitmapCallable(new BitmapFromCompressedImage());
00097     //  Log.v("test","test");
00098 
00099     //add
00100         package_name = getPackageName();
00101   }
00102 
00103 
00104     //add
00105      @Override
00106         public void onResume(){
00107         super.onResume();
00108 
00109                                 if(masterUri != null){
00110             intent = new Intent(getBaseContext(),AndroidAudioRecordService.class);
00111 
00112 
00113             intent.putExtra("masterUri",masterUri.toString());
00114             bindService(intent,serviceConnection,Context.BIND_AUTO_CREATE);
00115             }
00116             }
00117     //add
00118     /*            protected void onActivityResult(int requestCode,int resultCode,Intent data){
00119         if(requestCode == 0 && resultCode == RESULT_OK){
00120             try{
00121                 masterUri = new URI(data.getStringExtra("ROS_MASTER_URI"));
00122             }catch(URISyntaxException e){
00123                 throw new RuntimeException(e);
00124             }
00125         }
00126         }
00127     */
00128     
00129     @Override
00130   public boolean onTouchEvent(MotionEvent event) {
00131     if (event.getAction() == MotionEvent.ACTION_UP) {
00132       int numberOfCameras = Camera.getNumberOfCameras();
00133       final Toast toast;
00134       if (numberOfCameras > 1) {
00135         cameraId = (cameraId + 1) % numberOfCameras;
00136         rosCameraPreviewView.releaseCamera();
00137         rosCameraPreviewView.setCamera(Camera.open(cameraId));
00138         toast = Toast.makeText(this, "Switching cameras.", Toast.LENGTH_SHORT);
00139       } else {
00140         toast = Toast.makeText(this, "No alternative cameras to switch to.", Toast.LENGTH_SHORT);
00141       }
00142       runOnUiThread(new Runnable() {
00143         @Override
00144         public void run() {
00145           toast.show();
00146         }
00147       });
00148     }
00149     return true;
00150   }
00151 
00152 
00153   @Override
00154   protected void init(NodeMainExecutor nodeMainExecutor) {
00155       cameraId = 0;
00156       rosCameraPreviewView.setCamera(Camera.open(cameraId));
00157     NodeConfiguration nodeConfiguration =
00158         NodeConfiguration.newPublic(InetAddressFactory.newNonLoopback().getHostAddress());
00159         nodeConfiguration.setMasterUri(getMasterUri());
00160         masterUri = getMasterUri(); //add
00161                 if(masterUri != null){
00162             intent = new Intent(getBaseContext(),AndroidAudioRecordService.class);
00163 
00164 
00165             intent.putExtra("masterUri",masterUri.toString());
00166             bindService(intent,serviceConnection,Context.BIND_AUTO_CREATE);
00167                 } //add
00168                 nodeMainExecutor.execute(image, nodeConfiguration.setNodeName("/android/image_view"));
00169                 nodeMainExecutor.execute(rosCameraPreviewView, nodeConfiguration.setNodeName("/android/preview_view")); 
00170 
00171   }
00172 }


jsk_android_apps
Author(s): Kazuto Murase
autogenerated on Thu Jun 6 2019 18:03:46