-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHeartRateCode-1.rtf
More file actions
75 lines (74 loc) · 3.32 KB
/
HeartRateCode-1.rtf
File metadata and controls
75 lines (74 loc) · 3.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
{\rtf1\ansi\ansicpg1252\cocoartf2709
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
{\*\expandedcolortbl;;}
\margl1440\margr1440\vieww28600\viewh17440\viewkind0
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
\f0\fs24 \cf0 fun convertMediaUriToPath(uri: Uri?): String \{\
val proj = arrayOf(MediaStore.Images.Media.DATA)\
val cursor = contentResolver.query(uri!!, proj, null, null, null)\
val column_index = cursor!!.getColumnIndexOrThrow(MediaStore.Images.Media.DATA)\
cursor.moveToFirst()\
path = cursor.getString(column_index)\
cursor.close()\
return path\
\}\
\
open class SlowTask\
: AsyncTask<String, String, String?>() \{\
override fun doInBackground(vararg params: String?): String? \{\
var m_bitmap: Bitmap? = null\
var retriever = MediaMetadataRetriever()\
var frameList = ArrayList<Bitmap>()\
try \{\
\
retriever.setDataSource(params[0])\
var duration =\
retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_FRAME_COUNT)\
var aduration = duration!!.toInt()\
var i = 10\
while (i < aduration) \{\
val bitmap = retriever.getFrameAtIndex(i)\
frameList.add(bitmap!!)\
i += 5\
\}\
\} catch (m_e: Exception) \{\
\} finally \{\
retriever?.release()\
var redBucket: Long = 0\
var pixelCount: Long = 0\
val a = mutableListOf<Long>()\
for (i in frameList) \{\
redBucket = 0\
for (y in 550 until 650) \{\
for (x in 550 until 650) \{\
val c: Int = i.getPixel(x, y)\
pixelCount++\
redBucket += Color.red(c) + Color.blue(c) + Color.green(c)\
\}\
\}\
a.add(redBucket)\
\}\
val b = mutableListOf<Long>()\
for (i in 0 until a.lastIndex - 5) \{\
var temp =\
(a.elementAt(i) + a.elementAt(i + 1) + a.elementAt(i + 2) + a.elementAt(\
i + 3\
) + a.elementAt(\
i + 4\
)) / 4\
b.add(temp)\
\}\
var x = b.elementAt(0)\
var count = 0\
for (i in 1 until b.lastIndex) \{\
var p=b.elementAt(i.toInt())\
if ((p-x) > 3500) \{\
count = count + 1\
\}\
x = b.elementAt(i.toInt())\
\}\
var rate = ((count.toFloat() / 45) * 60).toInt()\
return (rate/2).toString()\
\}\
\}}