Advertisement
Guest User

Untitled

a guest
Apr 17th, 2014
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.43 KB | None | 0 0
  1. public class ResultsDatabase extends SQLiteOpenHelper {
  2. private static final String DATABASE_NAME = "results.db";
  3. private static final int DATABASE_VERSION = 2;
  4.  
  5. public static final String TABLE_NAME = "results";
  6. public static final String _ID = BaseColumns._ID;
  7. public static final String SAVED_NAME = "name";
  8. public static final String COLUMN_NAME_CREATE_DATE = "date";
  9. public static final String RIGHT_EAR = "right_ear";
  10. public static final String LEFT_EAR = "left_ear";
  11.  
  12. public ResultsDatabase(Context context) {
  13. // calls the super constructor, requesting the default cursor factory.
  14. super(context, DATABASE_NAME, null, DATABASE_VERSION);
  15. }
  16.  
  17. @Override
  18. public void onCreate(SQLiteDatabase db) {
  19. db.execSQL("CREATE TABLE " + TABLE_NAME + " ("
  20. + _ID + " INTEGER PRIMARY KEY,"
  21. + SAVED_NAME + " TEXT,"
  22. + COLUMN_NAME_CREATE_DATE + " INTEGER,"
  23. + RIGHT_EAR + " BLOB,"
  24. + LEFT_EAR + " BLOB"
  25. + ");");
  26. }
  27.  
  28. @Override
  29. public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
  30. }
  31.  
  32. public void storeResults(String name, List<EarSrt> leftAnswerList, List<EarSrt> rightAnswerList){
  33. SQLiteDatabase db = getWritableDatabase();
  34. ContentValues values = new ContentValues();
  35. values.put(SAVED_NAME, name);
  36. Long now = Long.valueOf(System.currentTimeMillis());
  37. values.put(COLUMN_NAME_CREATE_DATE, now);
  38. values.put(RIGHT_EAR, serializeObject(rightAnswerList ));
  39. values.put(LEFT_EAR, serializeObject(leftAnswerList ));
  40. db.insert(TABLE_NAME, null, values);
  41. }
  42.  
  43. public static byte[] serializeObject(Object o) {
  44. ByteArrayOutputStream bos = new ByteArrayOutputStream();
  45.  
  46. try {
  47. ObjectOutput out = new ObjectOutputStream(bos);
  48. out.writeObject(o);
  49. out.close();
  50.  
  51. // Get the bytes of the serialized object
  52. byte[] buf = bos.toByteArray();
  53.  
  54. return buf;
  55. } catch(IOException ioe) {
  56. Log.e("serializeObject", "error", ioe);
  57.  
  58. return null;
  59. }
  60. }
  61.  
  62. public static Object deserializeObject(byte[] b) {
  63. try {
  64. ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(b));
  65. Object object = in.readObject();
  66. in.close();
  67.  
  68. return object;
  69. } catch(ClassNotFoundException cnfe) {
  70. Log.e("deserializeObject", "class not found error", cnfe);
  71.  
  72. return null;
  73. } catch(IOException ioe) {
  74. Log.e("deserializeObject", "io error", ioe);
  75.  
  76. return null;
  77. }
  78. }
  79. }
  80.  
  81. public class TabbedResultsActivity extends SherlockFragmentActivity{
  82. TabHost mTabHost;
  83. TabManager mTabManager;
  84. public static final String IS_RIGHT_EAR = "is_right_ear";
  85. private ArrayList<EarSrt> leftAnswerList;
  86. private ArrayList<EarSrt> rightAnswerList;
  87.  
  88. private final static String TAG = "HearingTest";
  89.  
  90. private boolean isRightEarTab = true;
  91.  
  92. private boolean bothEarsBad;
  93. private boolean leftEarBad;
  94. private boolean rightEarBad;
  95.  
  96. @SuppressWarnings("unchecked")
  97. @Override
  98. protected void onCreate(Bundle savedInstanceState) {
  99. super.onCreate(savedInstanceState);
  100.  
  101. setContentView(R.layout.tab_layout);
  102.  
  103. ActionBar ab = this.getSupportActionBar();
  104. SherlockHelper.setupActionBar(ab, this);
  105.  
  106. View infoButton = findViewById(R.id.info_button);
  107. infoButton.setVisibility(View.VISIBLE);
  108.  
  109. Intent intent = getIntent();
  110. int rowId = intent.getIntExtra(ResultsDatabase._ID, -1);
  111. if ( rowId != -1 ) {
  112. ResultsDatabase db = new ResultsDatabase(this);
  113. String select = "(" + ResultsDatabase._ID + " == " + rowId + ")";
  114. Cursor c = db.getReadableDatabase().query(ResultsDatabase.TABLE_NAME, null, select, null, null, null,null);
  115. if ( c.moveToFirst() ) {
  116. int leftEarColumn = c.getColumnIndex(ResultsDatabase.LEFT_EAR);
  117. byte[] leftEarByteArray = c.getBlob(leftEarColumn);
  118. int rightEarColumn = c.getColumnIndex(ResultsDatabase.RIGHT_EAR);
  119. byte[] rightEarByteArray = c.getBlob(rightEarColumn);
  120. leftAnswerList = (ArrayList<EarSrt>) ResultsDatabase.deserializeObject(leftEarByteArray);
  121. rightAnswerList = (ArrayList<EarSrt>) ResultsDatabase.deserializeObject(rightEarByteArray);
  122. }
  123.  
  124. } else {
  125. byte[] leftEarByteArray = getIntent().getByteArrayExtra(ResultsDatabase.LEFT_EAR);
  126. byte[] rightEarByteArray = getIntent().getByteArrayExtra(ResultsDatabase.RIGHT_EAR);
  127. leftAnswerList = (ArrayList<EarSrt>) ResultsDatabase.deserializeObject(leftEarByteArray);
  128. rightAnswerList = (ArrayList<EarSrt>) ResultsDatabase.deserializeObject(rightEarByteArray);
  129. }
  130.  
  131. isRightEarTab = getIntent().getBooleanExtra(IS_RIGHT_EAR, true);
  132.  
  133. GraphView graphView = new GraphView(this);
  134.  
  135. graphView.setPoints(rightAnswerList);
  136. float leftAverage = calculateAverage(rightAnswerList);
  137. graphView.setAverage(leftAverage);
  138.  
  139. graphView.setPoints(leftAnswerList);
  140. float rightAverage = calculateAverage(leftAnswerList);
  141. graphView.setAverage(rightAverage);
  142.  
  143. setResults(leftAnswerList, rightAnswerList);
  144.  
  145. String results = setResultCaption(bothEarsBad, leftEarBad, rightEarBad).toString();
  146.  
  147. Log.d(TAG, "The results were " + results);
  148.  
  149. Bundle leftbundle = new Bundle();
  150. leftbundle.putString("results", results);
  151. leftbundle.putParcelableArrayList("graph", leftAnswerList);
  152. leftbundle.putFloat("average", leftAverage);
  153.  
  154. Bundle rightbundle = new Bundle();
  155. rightbundle.putString("results", results);
  156. rightbundle.putParcelableArrayList("graph", rightAnswerList);
  157. rightbundle.putFloat("average", rightAverage);
  158.  
  159. mTabHost = (TabHost)findViewById(android.R.id.tabhost);
  160. mTabHost.setup();
  161.  
  162. mTabManager = new TabManager(this, mTabHost, R.id.realtabcontent);
  163.  
  164. mTabManager.addTab(mTabHost.newTabSpec(getString(R.string.Left_ear)).setIndicator(getString(R.string.Left_ear)),
  165. LeftEarResults.class, leftbundle);
  166. mTabManager.addTab(mTabHost.newTabSpec("contacts").setIndicator(getString(R.string.Right_ear)),
  167. RightEarResults.class, rightbundle);
  168.  
  169. if (savedInstanceState != null) {
  170. mTabHost.setCurrentTabByTag(savedInstanceState.getString("tab"));
  171. }
  172. }
  173.  
  174. @Override
  175. protected void onSaveInstanceState(Bundle outState) {
  176. super.onSaveInstanceState(outState);
  177. outState.putString("tab", mTabHost.getCurrentTabTag());
  178. }
  179.  
  180. @Override
  181. public boolean onCreateOptionsMenu(Menu menu) {
  182. return MenuActivity.createMenu(this, menu);
  183. }
  184.  
  185. private float calculateAverage(List<EarSrt> steps) {
  186. float srt = 0.0f;
  187. int length = steps.size();
  188.  
  189. for (int i = (int)Math.ceil( (float)length/(float)2); i < length; i++) {
  190. EarSrt es = steps.get(i);
  191. srt += es.getSrt();
  192. }
  193. srt = srt / (length-(float)Math.ceil( (float)length/(float)2));
  194.  
  195. return srt;
  196. }
  197.  
  198. private void setResults(List<EarSrt> leftEar, List<EarSrt> rightEar) {
  199. float esLeft = calculateAverage(leftEar);
  200. float esRight = calculateAverage(rightEar);
  201.  
  202. leftEarBad = (esLeft > 24.0);
  203. rightEarBad = (esRight > 24.0);
  204. bothEarsBad = (leftEarBad && rightEarBad);
  205. }
  206.  
  207. private StringBuilder setResultCaption(boolean bothEarsBad, boolean leftEarBad, boolean rightEarBad) {
  208. String resultCaption;
  209. StringBuilder resultsText = new StringBuilder();
  210. if (bothEarsBad) {
  211. resultsText.append(getString(R.string.The_test_indicates_a_possible_hearing_loss));
  212. resultsText.append(getString(R.string.We_recommend_that_you_visit_a_Hearing_Care_Professional_for_a_comprehensive_hearing_check));
  213. }else{
  214. if (leftEarBad) {
  215. resultsText.append(getString(R.string.The_test_indicates_a_possible_hearing_loss_for_your_left_ear));
  216. resultsText.append(getString(R.string.We_recommend_that_you_visit_a_Hearing_Care_Professional_for_a_comprehensive_hearing_check));
  217. } else if (rightEarBad) {
  218. resultsText.append(getString(R.string.The_test_indicates_a_possible_hearing_loss_for_your_Right_ear));
  219. resultsText.append(getString(R.string.We_recommend_that_you_visit_a_Hearing_Care_Professional_for_a_comprehensive_hearing_check));
  220. }else {
  221. resultsText.append(getString(R.string.There_is_no_indication_of_hearing_loss));
  222. }
  223. }
  224.  
  225. resultsText.append(getString(R.string.The_results_of_the_hearing_test_are_not_to_be_utilized_as_an_official_outcome_for_assessing_levels_of_hearing_loss_True_hearing_loss_assessments_can_only_be_determined_by_a_licensed_hearing_healthcare_provider));
  226.  
  227. Log.d(TAG, "The results were " + resultsText);
  228.  
  229. return resultsText;
  230. }
  231.  
  232. public void infoView(View aView) {
  233. Intent intent = new Intent(this, InfoActivity.class);
  234. startActivity(intent);
  235. }
  236. }
  237.  
  238. public void storeResults(String name, List<EarSrt> leftAnswerList, List<EarSrt> rightAnswerList){
  239. SQLiteDatabase db = getWritableDatabase(); // opens the database connection
  240. try {
  241. ContentValues values = new ContentValues();
  242. values.put(SAVED_NAME, name);
  243. Long now = Long.valueOf(System.currentTimeMillis());
  244. values.put(COLUMN_NAME_CREATE_DATE, now);
  245. values.put(RIGHT_EAR, serializeObject(rightAnswerList ));
  246. values.put(LEFT_EAR, serializeObject(leftAnswerList ));
  247. db.insert(TABLE_NAME, null, values);
  248. }
  249. catch(Exception e) {
  250. e.printStackTrace();
  251. // furher error handling
  252. }
  253. finally {
  254. db.close(); // closes the database every time after access
  255. }
  256. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement