Guest User

Untitled

a guest
May 22nd, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 11.62 KB | None | 0 0
  1.  
  2.  
  3. package com.app.ax;
  4.  
  5.  
  6. import android.app.Activity;
  7. import android.app.AlertDialog;
  8. import android.content.Context;
  9. import android.content.Intent;
  10. import android.os.Bundle;
  11. import android.widget.Button;
  12. import android.widget.TextView;
  13.  
  14. import android.view.View;
  15. import android.view.View.OnClickListener;
  16.  
  17.  
  18. import android.graphics.Color;
  19. import android.hardware.SensorManager;
  20. import android.hardware.SensorEventListener;
  21.  
  22. import android.hardware.SensorEvent;
  23. import android.hardware.Sensor;
  24.  
  25. import java.util.ArrayList;
  26. import java.util.List;
  27.  
  28. import com.android.future.usb.UsbAccessory;
  29. import com.android.future.usb.UsbManager;
  30. import java.io.FileInputStream;
  31. import java.io.FileOutputStream;
  32. import java.io.IOException;
  33.  
  34. import android.widget.Toast;
  35. import android.content.Context;
  36.  
  37. import org.achartengine.*;
  38. import org.achartengine.chart.PointStyle;
  39. import org.achartengine.model.XYMultipleSeriesDataset;
  40. import org.achartengine.model.XYSeries;
  41. import org.achartengine.renderer.XYMultipleSeriesRenderer;
  42. import org.achartengine.renderer.XYSeriesRenderer;
  43.  
  44. public class AxActivity extends Activity  implements SensorEventListener, OrientationListener {
  45.    
  46.    
  47.     private UsbManager mUsbManager;
  48.         UsbAccessory mAccessory;
  49.         FileInputStream mInputStream;
  50.         FileOutputStream mOutputStream;
  51.        
  52.     SensorManager mSensorManager;
  53.     Sensor mAccelerometerSensor;
  54.  
  55.     TextView X;
  56.     TextView Y;
  57.     TextView Z;  
  58.     TextView C;
  59.    
  60.     float gravity;
  61.     float linear_acceleration;
  62.    
  63.     Axellerometer a = new Axellerometer();
  64.    
  65.     double margins[] = {0, 0};
  66.     List<List<Double>> mValues;
  67.    
  68.     Button mShowButton;
  69.     Button mStartButton;
  70.    
  71.     boolean mIsRecording = true;
  72.    
  73.     OnClickListener mStartButtonListener = new OnClickListener() {     
  74.        
  75.         public void onClick(View v) {
  76.        
  77.            
  78.                 mValues.get(SensorManager.DATA_X).clear();
  79.                 mValues.get(SensorManager.DATA_Y).clear();
  80.                 mValues.get(SensorManager.DATA_Z).clear();
  81.                 margins[0] = 0;
  82.                 margins[1] = 0;
  83.            
  84.         }
  85.     };
  86.    
  87.     OnClickListener mShowButtonListener = new View.OnClickListener() {
  88.            
  89.            
  90.             public void onClick(View v) {
  91.                 try
  92.                 {
  93.                     Intent intent = getChartIntent();
  94.                     startActivity(intent);
  95.                 }
  96.                 catch (Exception e) {
  97.                     new AlertDialog.Builder(AxActivity.this)
  98.                         .setTitle("Error")
  99.                         .setMessage(e.getMessage())
  100.                         .create()
  101.                         .show();
  102.                 }
  103.                
  104.             }
  105.         };
  106.    
  107.    
  108.         Intent getChartIntent() {
  109.             int [] colors = new int[] { Color.RED, Color.GREEN, Color.BLUE };
  110.             PointStyle[] styles = new PointStyle[] { PointStyle.POINT, PointStyle.POINT, PointStyle.POINT };
  111.             XYMultipleSeriesRenderer renderer = buildRenderer(colors, styles);
  112.             setChartSettings(renderer, "Sensor Values", "Index", "Value",
  113.                     0,
  114.                     mValues.get(SensorManager.DATA_X).size(),
  115.                     margins[0] * 1.5,
  116.                     margins[1] * 1.5,
  117.                 Color.GRAY, Color.LTGRAY);
  118.             return ChartFactory.getLineChartIntent(this, buildDataset(), renderer);
  119.         }
  120.        
  121.         protected void setChartSettings(XYMultipleSeriesRenderer renderer, String title, String xTitle,
  122.                   String yTitle, double xMin, double xMax, double yMin, double yMax, int axesColor,
  123.                   int labelsColor) {
  124.            
  125.                     renderer.setChartTitle(title);
  126.                     renderer.setXTitle(xTitle);
  127.                     renderer.setYTitle(yTitle);
  128.                     renderer.setXAxisMin(xMin);
  129.                     renderer.setXAxisMax(xMax);
  130.                     renderer.setYAxisMin(yMin);
  131.                     renderer.setYAxisMax(yMax);
  132.                     renderer.setAxesColor(axesColor);
  133.                     renderer.setLabelsColor(labelsColor);
  134.               }
  135.        
  136.         protected XYMultipleSeriesRenderer buildRenderer(int[] colors, PointStyle[] styles) {
  137.             XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
  138.             int length = colors.length;
  139.             for (int i = 0; i < length; i++) {
  140.               XYSeriesRenderer r = new XYSeriesRenderer();
  141.               r.setColor(colors[i]);
  142.               r.setPointStyle(styles[i]);
  143.               renderer.addSeriesRenderer(r);
  144.             }
  145.             return renderer;
  146.           }
  147.        
  148.         private void recordSensorValue(SensorEvent event) {
  149.             double value;
  150.             for(int i = SensorManager.DATA_X; i <= SensorManager.DATA_Z; i++)
  151.             {
  152.                 value = (double)event.values[i];
  153.                 margins[0] = Math.min(margins[0], value);
  154.                 margins[1] = Math.max(margins[1], value);
  155.                 mValues.get(i).add(value);
  156.             }
  157.         }
  158.        
  159.        
  160.         XYMultipleSeriesDataset buildDataset() {
  161.            
  162.             XYMultipleSeriesDataset result = new XYMultipleSeriesDataset();
  163.             XYSeries xSeries = new XYSeries("X");
  164.             XYSeries ySeries = new XYSeries("Y");
  165.             XYSeries zSeries = new XYSeries("Z");
  166.            
  167.             int count = mValues.get(SensorManager.DATA_X).size();
  168.             for(int i = 0; i < count; i++)
  169.             {
  170.                 xSeries.add(i, mValues.get(SensorManager.DATA_X).get(i));
  171.                 ySeries.add(i, mValues.get(SensorManager.DATA_Y).get(i));
  172.                 zSeries.add(i, mValues.get(SensorManager.DATA_Z).get(i));
  173.             }
  174.            
  175.             result.addSeries(xSeries);
  176.             result.addSeries(ySeries);
  177.             result.addSeries(zSeries);
  178.            
  179.             return result;
  180.         }
  181.        
  182.        
  183.         private static Context CONTEXT;
  184.        
  185.        /** Called when the activity is first created. */
  186.        @Override
  187.       public void onCreate(Bundle savedInstanceState) {
  188.            super.onCreate(savedInstanceState);
  189.            
  190.            setContentView(R.layout.main);
  191.      
  192.             mValues = new ArrayList<List<Double>>();
  193.             mValues.add(new ArrayList<Double>());
  194.             mValues.add(new ArrayList<Double>());
  195.             mValues.add(new ArrayList<Double>());
  196.            
  197.             mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
  198.            
  199.             X = (TextView)findViewById(R.id.x);
  200.             Y = (TextView)findViewById(R.id.y);
  201.             Z = (TextView)findViewById(R.id.z);
  202.             C = (TextView)findViewById(R.id.c);
  203.            
  204.             mShowButton = (Button)findViewById(R.id.button_show);
  205.             mShowButton.setOnClickListener(mShowButtonListener);
  206.            
  207.             mStartButton = (Button)findViewById(R.id.button_start);
  208.             mStartButton.setOnClickListener(mStartButtonListener);
  209.            
  210.             List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);
  211.            
  212.             if(sensors.size() > 0){
  213.                
  214.                 for (Sensor sensor : sensors) {
  215.                     switch(sensor.getType())
  216.                     {
  217.                     case Sensor.TYPE_ACCELEROMETER:
  218.                         if(mAccelerometerSensor == null) mAccelerometerSensor = sensor;
  219.                         break;
  220.                     default:
  221.                         break;
  222.                     }
  223.                 }
  224.             }
  225.            
  226.             CONTEXT = this;
  227.        }
  228.        
  229.      
  230.        public void clog(View view) {
  231.            
  232.           TextView text  = (TextView) findViewById(R.id.toptext);    
  233.            
  234.           text.setText( String.valueOf(a.getNumber()));
  235.            
  236.           System.out.format( String.valueOf(a.getNumber()) + "%n");
  237.        }
  238.        
  239.        
  240.        @Override
  241.         protected void onPause() {
  242.             mSensorManager.unregisterListener(this);
  243.             super.onPause();
  244.      
  245.         }
  246.        
  247.        
  248.        @Override
  249.         protected void onResume() {
  250.             super.onResume();
  251.             mSensorManager.registerListener(this, mAccelerometerSensor, SensorManager.SENSOR_DELAY_GAME);
  252.            
  253.            
  254.             if (OrientationManager.isSupported()) {
  255.                 OrientationManager.startListening(this);
  256.             }
  257.            
  258.         }
  259.        
  260.      
  261.        public void onAccuracyChanged(Sensor sensor, int accuracy) {
  262.            
  263.         }
  264.        
  265.    
  266.        public void onSensorChanged(SensorEvent event) {
  267.             float [] values = event.values;
  268.             switch(event.sensor.getType())
  269.             {
  270.             case Sensor.TYPE_ACCELEROMETER:
  271.                 {
  272.                    
  273.                    
  274.                     if(mIsRecording)
  275.                     {
  276.                         recordSensorValue(event);
  277.                     }
  278.                    
  279.  
  280.                     float alpha = 0.8f;
  281.                    
  282.                
  283.                    
  284.                     gravity = alpha * gravity + (1 - alpha) *  Float.valueOf(event.values[1]);  
  285.                     linear_acceleration= event.values[1] - gravity;
  286.                        
  287.                     float min = 0;
  288.                     float max = 9.7f;
  289.                     float g = 9.81f;
  290.                     double angle;
  291.                    
  292.                     //angle = Math.asin(linear_acceleration / g);
  293.                    
  294.                     angle =  -event.values[1] / 9.82F;
  295.  
  296.            
  297.                    float ta = (event.values[1] * 90)/max;
  298.                  
  299.                     X.setText(String.format("%1.3f", linear_acceleration));
  300.                     Y.setText(String.format("%1.3f", event.values[SensorManager.DATA_Y]));
  301.                     //Z.setText(String.valueOf(angle));
  302.                     //C.setText(String.valueOf(ta));
  303.                    
  304.                    
  305.                    
  306.                     //int sensor = event.type;
  307.                     //float[] values = event.values;
  308.                     int i;
  309.                     StringBuffer str=new StringBuffer();
  310.                     // do something with the sensor data
  311.                     TextView text = (TextView) findViewById(R.id.my_text);
  312.                     float[] R = new float[9]; // rotation matrix
  313.                     float[] magnetic = new float[3];
  314.                     float[] orientation = new float[3];
  315.  
  316.                     magnetic[0]=0;
  317.                     magnetic[1]=1;
  318.                     magnetic[2]=0;
  319.  
  320.                
  321.                         str.append(values[1]);
  322.                         str.append(", ");
  323.                    
  324.  
  325.                     SensorManager.getRotationMatrix(R, null, values,   magnetic);
  326.                     SensorManager.getOrientation(R, orientation);
  327.                    
  328.                     orientation[1]*= 57.2957795f;
  329.                
  330.                     sendCommand((byte)1, (byte)1, (byte) orientation[1]);
  331.                    
  332.                     str.append(orientation[1]);
  333.                  
  334.                    
  335.                     text.setText(str);
  336.                    
  337.                    
  338.                 }
  339.                 break;
  340.             }
  341.         }
  342.        
  343.      
  344.        
  345.        
  346.         protected void onDestroy() {
  347.             super.onDestroy();
  348.             if (OrientationManager.isListening()) {
  349.                     OrientationManager.stopListening();
  350.             }
  351.            
  352.         }
  353.  
  354.         public static Context getContext() {
  355.                     return CONTEXT;
  356.             }
  357.  
  358.            
  359.             public void onOrientationChanged(float azimuth, float pitch, float roll) {
  360.                     ((TextView) findViewById(R.id.azimuth)).setText(
  361.                                     String.valueOf(azimuth));
  362.                     ((TextView) findViewById(R.id.pitch)).setText(
  363.                                     String.valueOf(pitch));
  364.                     ((TextView) findViewById(R.id.roll)).setText(
  365.                                     String.valueOf(roll));
  366.             }
  367.  
  368.            
  369.             public void onBottomUp() {
  370.                     Toast.makeText(this, "Bottom UP", 1000).show();
  371.             }
  372.  
  373.            
  374.             public void onLeftUp() {
  375.                     Toast.makeText(this, "Left UP", 1000).show();
  376.             }
  377.  
  378.            
  379.             public void onRightUp() {
  380.                     Toast.makeText(this, "Right UP", 1000).show();
  381.             }
  382.  
  383.            
  384.             public void onTopUp() {
  385.                     Toast.makeText(this, "Top UP", 1000).show();
  386.             }
  387.            
  388.            
  389.            
  390.      
  391.             // mActivity.sendCommand((byte)2, (byte)0, (byte)255)
  392.             public void sendCommand(byte command, byte target, int value) {
  393.                 byte[] buffer = new byte[3];
  394.                 if (value > 255)
  395.                         value = 255;
  396.  
  397.                 buffer[0] = command;
  398.                 buffer[1] = target;
  399.                 buffer[2] = (byte) value;
  400.                 if (mOutputStream != null && buffer[1] != -1) {
  401.                     try {
  402.                         mOutputStream.write(buffer);
  403.                        
  404.                         C.setText(String.valueOf(value));
  405.                        
  406.                     } catch (IOException e) {
  407.                        
  408.                         C.setText(String.valueOf("Usb write error"));
  409.                         e.printStackTrace();
  410.                     }
  411.                 }
  412.             }
  413.            
  414.  
  415. }
Add Comment
Please, Sign In to add comment