Showing
3 changed files
with
29 additions
and
25 deletions
| ... | @@ -12,15 +12,19 @@ | ... | @@ -12,15 +12,19 @@ |
| 12 | android:roundIcon="@mipmap/ic_launcher_round" | 12 | android:roundIcon="@mipmap/ic_launcher_round" |
| 13 | android:supportsRtl="true" | 13 | android:supportsRtl="true" |
| 14 | android:theme="@style/AppTheme"> | 14 | android:theme="@style/AppTheme"> |
| 15 | - <activity android:name=".FirstActivity"> | 15 | + <activity android:name=".FirstActivity" |
| 16 | + android:screenOrientation="portrait"> | ||
| 16 | <intent-filter> | 17 | <intent-filter> |
| 17 | <action android:name="android.intent.action.MAIN" /> | 18 | <action android:name="android.intent.action.MAIN" /> |
| 18 | 19 | ||
| 19 | <category android:name="android.intent.category.LAUNCHER" /> | 20 | <category android:name="android.intent.category.LAUNCHER" /> |
| 20 | </intent-filter> | 21 | </intent-filter> |
| 21 | </activity> | 22 | </activity> |
| 22 | - <activity android:name = ".ChoiceActivity"/> | 23 | + <activity android:name = ".ChoiceActivity" |
| 23 | - <activity android:name = ".ExerciseActivity"/> | 24 | + android:screenOrientation="portrait"/> |
| 25 | + <activity android:name = ".ExerciseActivity" | ||
| 26 | + android:screenOrientation="landscape" | ||
| 27 | + android:theme="@style/Theme.AppCompat.NoActionBar"/> | ||
| 24 | <activity android:name = ".ReportActivity"/> | 28 | <activity android:name = ".ReportActivity"/> |
| 25 | </application> | 29 | </application> |
| 26 | 30 | ... | ... |
| ... | @@ -26,6 +26,7 @@ import android.media.Image; | ... | @@ -26,6 +26,7 @@ import android.media.Image; |
| 26 | import android.media.ImageReader; | 26 | import android.media.ImageReader; |
| 27 | import android.os.Bundle; | 27 | import android.os.Bundle; |
| 28 | import android.util.Log; | 28 | import android.util.Log; |
| 29 | +import android.util.TypedValue; | ||
| 29 | import android.view.SurfaceHolder; | 30 | import android.view.SurfaceHolder; |
| 30 | import android.view.SurfaceView; | 31 | import android.view.SurfaceView; |
| 31 | import android.widget.TextView; | 32 | import android.widget.TextView; |
| ... | @@ -54,7 +55,6 @@ public class ExerciseActivity extends AppCompatActivity implements SurfaceHolder | ... | @@ -54,7 +55,6 @@ public class ExerciseActivity extends AppCompatActivity implements SurfaceHolder |
| 54 | private Interpreter interpreter; | 55 | private Interpreter interpreter; |
| 55 | private int count = 0; | 56 | private int count = 0; |
| 56 | private boolean up = true; | 57 | private boolean up = true; |
| 57 | - private TextView countView; | ||
| 58 | DBHelper dbHelper; | 58 | DBHelper dbHelper; |
| 59 | String getTime; | 59 | String getTime; |
| 60 | 60 | ||
| ... | @@ -72,8 +72,6 @@ public class ExerciseActivity extends AppCompatActivity implements SurfaceHolder | ... | @@ -72,8 +72,6 @@ public class ExerciseActivity extends AppCompatActivity implements SurfaceHolder |
| 72 | surfaceView = findViewById(R.id.surfaceView); | 72 | surfaceView = findViewById(R.id.surfaceView); |
| 73 | surfaceView.getHolder().addCallback(this); | 73 | surfaceView.getHolder().addCallback(this); |
| 74 | 74 | ||
| 75 | - countView = findViewById(R.id.count); | ||
| 76 | - | ||
| 77 | try { | 75 | try { |
| 78 | AssetFileDescriptor fileDescriptor = getAssets().openFd("pushup.tflite"); | 76 | AssetFileDescriptor fileDescriptor = getAssets().openFd("pushup.tflite"); |
| 79 | FileInputStream is = new FileInputStream(fileDescriptor.getFileDescriptor()); | 77 | FileInputStream is = new FileInputStream(fileDescriptor.getFileDescriptor()); |
| ... | @@ -242,6 +240,8 @@ public class ExerciseActivity extends AppCompatActivity implements SurfaceHolder | ... | @@ -242,6 +240,8 @@ public class ExerciseActivity extends AppCompatActivity implements SurfaceHolder |
| 242 | if(Math.abs(modelInputRatio - bitmapRatio) < maxDifference) | 240 | if(Math.abs(modelInputRatio - bitmapRatio) < maxDifference) |
| 243 | return croppedBitmap; | 241 | return croppedBitmap; |
| 244 | 242 | ||
| 243 | + Matrix rotate = new Matrix(); | ||
| 244 | + rotate.postRotate(270); | ||
| 245 | if(modelInputRatio < bitmapRatio) { | 245 | if(modelInputRatio < bitmapRatio) { |
| 246 | // New image is taller so we are height constrained. | 246 | // New image is taller so we are height constrained. |
| 247 | float cropHeight = bitmap.getHeight() - bitmap.getWidth() / modelInputRatio; | 247 | float cropHeight = bitmap.getHeight() - bitmap.getWidth() / modelInputRatio; |
| ... | @@ -250,7 +250,8 @@ public class ExerciseActivity extends AppCompatActivity implements SurfaceHolder | ... | @@ -250,7 +250,8 @@ public class ExerciseActivity extends AppCompatActivity implements SurfaceHolder |
| 250 | 0, | 250 | 0, |
| 251 | (int) cropHeight / 2, | 251 | (int) cropHeight / 2, |
| 252 | bitmap.getWidth(), | 252 | bitmap.getWidth(), |
| 253 | - (int) (bitmap.getHeight() - cropHeight) | 253 | + (int) (bitmap.getHeight() - cropHeight), |
| 254 | + rotate, false | ||
| 254 | ); | 255 | ); |
| 255 | } | 256 | } |
| 256 | else { | 257 | else { |
| ... | @@ -260,7 +261,8 @@ public class ExerciseActivity extends AppCompatActivity implements SurfaceHolder | ... | @@ -260,7 +261,8 @@ public class ExerciseActivity extends AppCompatActivity implements SurfaceHolder |
| 260 | (int) (cropWidth / 2), | 261 | (int) (cropWidth / 2), |
| 261 | 0, | 262 | 0, |
| 262 | (int) (bitmap.getWidth() - cropWidth), | 263 | (int) (bitmap.getWidth() - cropWidth), |
| 263 | - bitmap.getHeight() | 264 | + bitmap.getHeight(), rotate, false |
| 265 | + | ||
| 264 | ); | 266 | ); |
| 265 | } | 267 | } |
| 266 | return croppedBitmap; | 268 | return croppedBitmap; |
| ... | @@ -280,9 +282,14 @@ public class ExerciseActivity extends AppCompatActivity implements SurfaceHolder | ... | @@ -280,9 +282,14 @@ public class ExerciseActivity extends AppCompatActivity implements SurfaceHolder |
| 280 | 282 | ||
| 281 | Paint paint = new Paint(); | 283 | Paint paint = new Paint(); |
| 282 | Canvas canvas = surfaceView.getHolder().lockCanvas(); | 284 | Canvas canvas = surfaceView.getHolder().lockCanvas(); |
| 285 | + canvas.drawRGB(0, 0, 0); | ||
| 283 | 286 | ||
| 284 | // 이미지 그리기 | 287 | // 이미지 그리기 |
| 285 | - canvas.drawBitmap(croppedBitmap, new Rect(0, 0, croppedBitmap.getWidth(), croppedBitmap.getHeight()), new Rect(0, 0, canvas.getWidth(), canvas.getWidth()), paint); | 288 | + //float scale = (float) canvas.getWidth() / bitmap.getWidth(); |
| 289 | + //if(bitmap.getHeight() * scale > canvas.getHeight()) | ||
| 290 | + // scale = (float) canvas.getHeight() / bitmap.getHeight(); | ||
| 291 | + //canvas.drawBitmap(bitmap, new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()), new Rect(0, 0, (int) (bitmap.getWidth() * scale), (int) (bitmap.getHeight() * scale)), paint); | ||
| 292 | + canvas.drawBitmap(croppedBitmap, new Rect(0, 0, croppedBitmap.getWidth(), croppedBitmap.getHeight()), new Rect(0, 0, canvas.getHeight(), canvas.getHeight()), paint); | ||
| 286 | 293 | ||
| 287 | float[][][] keyMap = new float[1][257][257]; | 294 | float[][][] keyMap = new float[1][257][257]; |
| 288 | float[][] result = new float[1][2]; | 295 | float[][] result = new float[1][2]; |
| ... | @@ -293,7 +300,7 @@ public class ExerciseActivity extends AppCompatActivity implements SurfaceHolder | ... | @@ -293,7 +300,7 @@ public class ExerciseActivity extends AppCompatActivity implements SurfaceHolder |
| 293 | if(keyPoint.getScore() < 0.7) | 300 | if(keyPoint.getScore() < 0.7) |
| 294 | continue; | 301 | continue; |
| 295 | 302 | ||
| 296 | - canvas.drawCircle((float) keyPoint.getPosition().getX() / scaledBitmap.getWidth() * canvas.getWidth(), (float) keyPoint.getPosition().getY() / scaledBitmap.getWidth() * canvas.getWidth(), 5, paint); | 303 | + canvas.drawCircle((float) keyPoint.getPosition().getX() / scaledBitmap.getWidth() * canvas.getHeight(), (float) keyPoint.getPosition().getY() / scaledBitmap.getWidth() * canvas.getHeight(), 5, paint); |
| 297 | if(keyPoint.getPosition().getX() >= 0 && keyPoint.getPosition().getX() < 257 && keyPoint.getPosition().getY() >= 0 && keyPoint.getPosition().getY() < 257) | 304 | if(keyPoint.getPosition().getX() >= 0 && keyPoint.getPosition().getX() < 257 && keyPoint.getPosition().getY() >= 0 && keyPoint.getPosition().getY() < 257) |
| 298 | keyMap[0][keyPoint.getPosition().getY()][keyPoint.getPosition().getX()] = i + 1; | 305 | keyMap[0][keyPoint.getPosition().getY()][keyPoint.getPosition().getX()] = i + 1; |
| 299 | } | 306 | } |
| ... | @@ -305,25 +312,26 @@ public class ExerciseActivity extends AppCompatActivity implements SurfaceHolder | ... | @@ -305,25 +312,26 @@ public class ExerciseActivity extends AppCompatActivity implements SurfaceHolder |
| 305 | if(result[0][0] >= 0.7) { | 312 | if(result[0][0] >= 0.7) { |
| 306 | if(!up) { | 313 | if(!up) { |
| 307 | count++; | 314 | count++; |
| 308 | - countView.setText("Count: " + count); | ||
| 309 | 315 | ||
| 310 | //db에 값 증가 | 316 | //db에 값 증가 |
| 311 | SQLiteDatabase db = dbHelper.getReadableDatabase(); | 317 | SQLiteDatabase db = dbHelper.getReadableDatabase(); |
| 312 | - String sql = "SELECT pushup FROM reports WHERE date=" + getTime + ";"; | ||
| 313 | - Cursor cs = db.rawQuery(sql, null); | ||
| 314 | - cs.moveToNext(); | ||
| 315 | - int before = cs.getInt(0); | ||
| 316 | 318 | ||
| 317 | db = dbHelper.getWritableDatabase(); | 319 | db = dbHelper.getWritableDatabase(); |
| 318 | - sql = "UPDATE reports SET pushup='" + before + 1 + "' WHERE date=" + getTime + ";"; | 320 | + String sql = "UPDATE reports SET pushup=pushup+1 WHERE date=" + getTime + ";"; |
| 319 | db.execSQL(sql); | 321 | db.execSQL(sql); |
| 320 | } | 322 | } |
| 321 | 323 | ||
| 322 | up = true; | 324 | up = true; |
| 323 | } | 325 | } |
| 324 | - else if(result[0][1] >= 0.7) | 326 | + else if(result[0][1] >= 0.6) |
| 325 | up = false; | 327 | up = false; |
| 326 | 328 | ||
| 329 | + paint.setTextAlign(Paint.Align.LEFT); | ||
| 330 | + int fontSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 24, getResources().getDisplayMetrics()); | ||
| 331 | + paint.setTextSize(fontSize); | ||
| 332 | + int pad = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 16, getResources().getDisplayMetrics()); | ||
| 333 | + canvas.drawText(String.format("Count: %d", count), canvas.getHeight() + pad, pad + fontSize, paint); | ||
| 334 | + | ||
| 327 | surfaceView.getHolder().unlockCanvasAndPost(canvas); | 335 | surfaceView.getHolder().unlockCanvasAndPost(canvas); |
| 328 | } | 336 | } |
| 329 | } | 337 | } | ... | ... |
| ... | @@ -12,12 +12,4 @@ | ... | @@ -12,12 +12,4 @@ |
| 12 | android:layout_width="match_parent" | 12 | android:layout_width="match_parent" |
| 13 | android:layout_height="match_parent" /> | 13 | android:layout_height="match_parent" /> |
| 14 | 14 | ||
| 15 | - <TextView | ||
| 16 | - android:id="@+id/count" | ||
| 17 | - android:layout_width="wrap_content" | ||
| 18 | - android:layout_height="wrap_content" | ||
| 19 | - android:text="Count: 0" | ||
| 20 | - android:textColor="#FF0000" | ||
| 21 | - android:textSize="18sp" /> | ||
| 22 | - | ||
| 23 | </FrameLayout> | 15 | </FrameLayout> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or login to post a comment