From 52fd782c5d0ac7ed80f9b8686d890e8534e36ce4 Mon Sep 17 00:00:00 2001 From: ScorpioMiku <1056992492@qq.com> Date: Wed, 26 Sep 2018 22:13:36 +0800 Subject: [PATCH 01/13] datas --- datas/11111.csv | 44 ++++++++ datas/menu_classification (1).csv | 156 ++++++++++++++++++++++++++++ datas/menu_classification.csv | 156 ++++++++++++++++++++++++++++ datas/occupation_classification.csv | Bin 0 -> 12160 bytes datas/physique (1).xlsx | Bin 0 -> 9852 bytes datas/元素效果.txt | 44 ++++++++ datas/病).csv | 39 +++++++ datas/职业.xlsx | Bin 0 -> 14449 bytes datas/营养.txt | 3 + datas/营养标准.xlsx | Bin 0 -> 10054 bytes 10 files changed, 442 insertions(+) create mode 100644 datas/11111.csv create mode 100644 datas/menu_classification (1).csv create mode 100644 datas/menu_classification.csv create mode 100644 datas/occupation_classification.csv create mode 100644 datas/physique (1).xlsx create mode 100644 datas/元素效果.txt create mode 100644 datas/病).csv create mode 100644 datas/职业.xlsx create mode 100644 datas/营养.txt create mode 100644 datas/营养标准.xlsx diff --git a/datas/11111.csv b/datas/11111.csv new file mode 100644 index 0000000..e2f391a --- /dev/null +++ b/datas/11111.csv @@ -0,0 +1,44 @@ +occupation,classification,,,,, +ʦ,"εʳ,ȴʳ,Dzʳ,ȥʳ,ʳ,ʳ",,,,, +,"ʳ,Dzʳ,ʳ,ʧʳ",,,,, +Ա,"ʲ,ݲ,ӻ˥ʳ,Ѫ˫ʳ,ڷʳ,ʳ,ʳ",,,,, +ʦ,"»ҵȺʳ,εʳ",,,,, +ҽ,"Dzʳ,ʳ,ʳ",,,,, +ʿ,"ӴԱʳ,Dzʳ,ʳ,ʳ,ʳ",,,,, +˾,"̴ʳ,Ŀʳ,ؽʳ",,,,, +,"ʳ,˶Աʳ,Ƣθʳ,ʳ",,,,, +ʦ,"Dzʳ,ʳ,ʧʳ,Ƣθʳ",,,,, +,"ʳ,ʳ,Ѫ˫ʳ,Dzʳ,ʧʳ,ͷʹʳ",,,,, +,"Dzʳ,Ѫѹʳ,˥ʳ,ļʳ,ڷʳ,ͷʹʳ",,,,, +,"ʳ,Ӫʳ,׳ʳ,ʳ,Ѫ˫ʳ",,,,, +,"ӴѧԱʳ,Ƚⶾʳ,Ѫ˫ʳ,ʳ,ʳ",,,,, +๤,"Ƣʳ,εʳ,ʳ,Ѫ˫ʳ,ʳ",,,,, +ʦ,"Ӫʳ,εʳ,ʳ,ڷʳ,Ƣθ",,,,, +Ա,"˥ʳ,Ѫѹʳ,Ŀʳ,Ѫʳ,Ѫ˫ʳ",,,,, +Ա,"Ƣʳ,Ѫѹʳ,Ѫ˫ʳ,εʳ,ͷʹʳ",,,,, +˶Ա,"вʳ,Ƣθʳ,ʳ,ؽʳ,˶Աʳ,ʳ",,,,, +,"»ҵȺʳ,˥ʳ,Ŀʳ,ʧʳ,ĵʳ",,,,, +ս,"ʳ,ݲ,ȴʳ,Ѫ˫ʳ,ʳ",,,,, +ʦ,"Ŀʳ,ʳ,Ѫʳ,Dzʳ,ձ",,,,, +,"ձ,Ƣθʳ,˥ʳ,Ŀʳ,Dzʳ",,,,, +,"Dzʳ,ʳ,ʧʳ,ĵʳ,ͷʹʳ,ʳ",,,,, +ǰ̨,"ҳ,׳ʳ,ݲ,ȴʳ,ĵʳ",,,,, +ѧ,"ʳ,Ƣθʳ,Ŀʳ,ʳ",,,,, +,"ʳ,εʳ,Ӳʳ,ʳ,ζ",,,,, +,"Ŀʳ,Dzʳ,Ʒʳ,ζ,ؽʳ",,,,, +Ա,"˥ʳ,Dzʳ,ʳ,ڷʳ,ʧʳ",,,,, +Ա,"ʳ,ʳ,Ŀʳ,ʳ,ʳ,",,,,, +,"Ŀʳ,ʳ,˥ʳ,Dzʳ,ʳ",,,,, +ģ,"ݲ,ʲ,ӻ˥ʳ,ʳ,ڷʳ",,,,, +,"Dzʳ,ʳ,ʳ,Ѫѹʳ,ʳ",,,,, +,"ʳ,ʳ,ʳ,ʲ,ȥʳ,ʳ",,,,, +÷,"׳ʳ,Ŀʳ,ʳ,ؽʳ,Ƣθʳ",,,,, +Ա,"Ƥʳ,׳ʳ,ʳ,ؽʳ,ʳ",,,,, +Ա,"Ƥʳ,ʳ,θʳ,ʳ,׳ʳ",,,,, +,"ʳ,ؽʳ,׳ʳ,Ŀʳ,ʳ",,,,, +,"׳ʳ,Ƥʳ,Ŀʳ,ʲ,ǰټʳ",,,,, +ʦ,"ؽʳ,εʳ,׳ʳ,֧ʳ,Ƥʳ",,,,, +ʦ,"ؽʳ,Ŀʳ,Ƥʳ,ʳ,εʳ",,,,, +ķ,"ؽʳ,׳ʳ,Ŀʳ,ðʳ,Ѫ˫ʳ",,,,, +ʦ,"ӴԱʳ,ʳ,Ŀʳ,ؽʳ,׳ʳ",,,,, +Ա,"Ŀʳ,ʳ,ðʳ,Ƥʳ,εʳ",,,,, diff --git a/datas/menu_classification (1).csv b/datas/menu_classification (1).csv new file mode 100644 index 0000000..1ad7a59 --- /dev/null +++ b/datas/menu_classification (1).csv @@ -0,0 +1,156 @@ +,classification +0,川菜 +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,消化不良食谱 +76,失眠食谱 +77,肺调养食谱 +78,浙菜 +79,增肥食谱 +80,湘菜 +81,卤酱菜 +82,止血调理食谱 +83,冻疮食谱 +84,利尿食谱 +85,药膳偏方 +86,心调养食谱 +87,粤菜 +88,肢寒畏冷食谱 +89,幼儿菜谱 +90,痔疮食谱 +91,痛经食谱 +92,西北菜 +93,素斋菜 +94,胃炎食谱 +95,尿路结石食谱 +96,微波菜谱 +97,肠炎食谱 +98,哮喘食谱 +99,头痛食谱 +100,祛痰食谱 +101,痛风食谱 +102,脚气食谱 +103,婴儿食谱 +104,年夜饭 +105,口腔溃疡食谱 +106,丰胸食谱 +107,山西菜 +108,江西菜 +109,学龄前儿童食谱 +110,关节炎食谱 +111,苏菜 +112,子宫脱垂食谱 +113,祛痱食谱 +114,感冒食谱 +115,胆石症食谱 +116,痢疾食谱 +117,肝硬化食谱 +118,呕吐调理食谱 +119,前列腺疾病食谱 +120,云贵菜 +121,解酒食谱 +122,高温环境作业人群食谱 +123,消化性溃疡食谱 +124,腮腺炎食谱 +125,小儿营养不良食谱 +126,保胎食谱 +127,其他国家 +128,闽菜 +129,癫痫食谱 +130,鼻炎食谱 +131,美味粥汤 +132,跌打骨折食谱 +133,运动员食谱 +134,皮肤病食谱 +135,围孕期食谱 +136,产妇菜谱 +137,时尚饮品 +138,清爽凉菜 +139,美味糕点 +140,韩国料理 +141,意大利餐 +142,麻疹食谱 +143,接触电离辐射人员食谱 +144,支气管炎食谱 +145,日本料理 +146,克山病食谱 +147,肺气肿食谱 +148,港台菜 +149,其他菜系 +150,骨质增生食谱 +151,疟疾食谱 +152,徽菜 +153,火锅食谱 +154,法国菜谱 diff --git a/datas/menu_classification.csv b/datas/menu_classification.csv new file mode 100644 index 0000000..981f992 --- /dev/null +++ b/datas/menu_classification.csv @@ -0,0 +1,156 @@ +,classification +0, +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,IJʳ +40,ʳ +41, +42,ݲ +43,ȴʳ +44,ʲ +45,Ʒʳ +46,ƶѪʳ +47,ļʳ +48,Ѫʳ +49,и +50,ʳ +51,θʳ +52,ӻ˥ʳ +53,Ѫ˫ʳ +54,ʳ +55,ĸʳ +56,ʳ +57,Dzʳ +58,ʳ +59,ڷʳ +60,ȥʳ +61,ʳ +62,ͨʳ +63,ʳ +64,ʳ +65,ʳ +66,³ +67, +68,ˮʳ +69,ʳ +70, +71,Ʒ/ +72,кʳ +73,ԥ +74, +75,ʳ +76,ʧʳ +77,εʳ +78, +79,ʳ +80, +81,± +82,ֹѪʳ +83,ʳ +84,ʳ +85,ҩƫ +86,ĵʳ +87, +88,֫ηʳ +89,׶ +90,̴ʳ +91,ʹʳ +92, +93,ի +94,θʳ +95,·ʯʳ +96,΢ +97,ʳ +98,ʳ +99,ͷʹʳ +100,̵ʳ +101,ʹʳ +102,ʳ +103,Ӥʳ +104,ҹ +105,ǻʳ +106,ʳ +107,ɽ +108, +109,ѧǰͯʳ +110,ؽʳ +111,ղ +112,ӹѴʳ +113,ʳ +114,ðʳ +115,ʯ֢ʳ +116,ʳ +117,Ӳʳ +118,ݵʳ +119,ǰټʳ +120,ƹ +121,ʳ +122,»ҵȺʳ +123,ʳ +124,ʳ +125,СӪʳ +126,̥ʳ +127, +128, +129,ʳ +130,ʳ +131,ζ +132,ʳ +133,˶Աʳ +134,Ƥʳ +135,Χʳ +136, +137,ʱƷ +138,ˬ +139,ζ +140, +141, +142,ʳ +143,ӴԱʳ +144,֧ʳ +145,ձ +146,ɽʳ +147,ʳ +148,̨ +149,ϵ +150,ʳ +151,űʳ +152,ղ +153,ʳ +154, diff --git a/datas/occupation_classification.csv b/datas/occupation_classification.csv new file mode 100644 index 0000000000000000000000000000000000000000..7672f80a9fb4a22b6180e307bcabd960d066b592 GIT binary patch literal 12160 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 literal 0 HcmV?d00001 diff --git a/datas/physique (1).xlsx b/datas/physique (1).xlsx new file mode 100644 index 0000000000000000000000000000000000000000..bbd814a8f7326f3ce89eb0314914432506c8a7c3 GIT binary patch literal 9852 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

iLk+kq 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 Ka@3^HdjA97Np7hC literal 0 HcmV?d00001 From b5bccec04aa60468be50788271200172cc54aa78 Mon Sep 17 00:00:00 2001 From: ScorpioMiku <1056992492@qq.com> Date: Thu, 27 Sep 2018 20:48:19 +0800 Subject: [PATCH 02/13] data --- datas/病).csv | 66 +++++++++++++++++------------------- datas/职业 (bmi分类).xlsx | Bin 0 -> 10932 bytes 2 files changed, 31 insertions(+), 35 deletions(-) create mode 100644 datas/职业 (bmi分类).xlsx diff --git a/datas/病).csv b/datas/病).csv index 48e30bb..37c614c 100644 --- a/datas/病).csv +++ b/datas/病).csv @@ -1,39 +1,35 @@ ,󿨣,̼ˮˣ,֬ˣ,ʣˣ,άأˣ,άA΢ˣ,άB1΢ˣأ,άB2΢ˣ˻أ,άB6΢ˣ,άC΢ˣ,άEˣ,ܲأ΢ˣ,̴ˣ,þˣ,ƣˣ,,п,ͭ,,,,, -/Ů,[65.5 + 9.6 x (kg) + l.9 x ߶(cm) - 4.7 x ] x ,ÿ7.5g,ÿ1.2g,1g/,25,700,1200,1200,1400,100,14,3600,200,315,1200,15,12,2.3,3.5,2000,1000,1500,0.05 -/,[66 + 1.38 x (kg) + 5 x ߶(cm) - 6.8 x ] x ,ÿ7.5g,ÿ1.2g,1g/,25,800,1400,1400,2000,100,14,3400,200,360,1200,10,15,2.3,3.5,2000,1000,1500,0.05 -,,,,,,,,,,,,,,,,,,,,,,, ʳ,1.1,0,0,0,15,0,0,0,0,100,0,0,0,0,0,0,0,1,0,1000,500,1000,0 -ʳ,1.1,0,0,0,0,500,0,0,1500,0,0,2000,100,0,700,10,7,0,2,0,500,0,0 +ʳ,1.1,0,0,0,0,500,0,0,1500,0,0,2000,100,0,700,7,7,0,2,0,500,0,0 ʳ,1.1,0,0,0,0,0,0,0,0,0,10,1500,100,0,0,0,10,0,2,0,0,0,0 ʳ,1.1,-1,0,0,15,0,0,0,1500,0,0,0,0,0,0,0,0,0,0,0,0,500,0 -ʳ,1.1,0,0,0,0,0,0,0,0,100,0,1500,0,0,1000,5,0,2,2,0,500,0,0 -Ӫʳ,1.1,0,0,0,0,500,0,0,1500,,,,,,,,,,,,,, -ʳ,1.1,0,0,0,15,0,0,0,1000,,,,,,,,,,,,,, -׳ʳ,1.1,0,0,0,0,0,0,0,0,,,,,,,,,,,,,, -Ѫѹʳ,1.1,0,0,0,0,0,0,0,0,,,,,,,,,,,,,, -Ƣθʳ,1.1,0,0,0,10,0,0,0,1500,,,,,,,,,,,,,, -ѧڶͯʳ,1.1,0,0,0,0,500,0,0,1000,,,,,,,,,,,,,, -˥ʳ,1.1,0,0,0,0,0,0,0,0,,,,,,,,,,,,,, -¾ʳ,1.1,0,0,0,0,0,0,0,0,,,,,,,,,,,,,, -Ƚⶾʳ,1.1,0,0,0,10,0,0,500,0,,,,,,,,,,,,,, -Ѫʳ,1.1,0,0,0,0,0,0,0,0,,,,,,,,,,,,,, -֬Ѫ֢ʳ,1.1,0,0,0,10,0,0,0,0,,,,,,,,,,,,,, -ʳ,1.1,0,0,0,0,0,0,0,0,,,,,,,,,,,,,, -ȴʳ,1.1,0,0,0,15,0,0,0,0,,,,,,,,,,,,,, -ƶѪʳ,1.1,0,0,0,0,0,0,0,0,,,,,,,,,,,,,, -Ѫʳ,1.1,0,0,0,15,0,500,0,0,,,,,,,,,,,,,, -и,1.1,0,0,0,0,0,0,0,0,,,,,,,,,,,,,, -֢ʳ,1.1,0,0,0,0,0,200,700,0,,,,,,,,,,,,,, -θʳ,1.1,0,0,0,0,0,0,0,1000,,,,,,,,,,,,,, -ʳ,1.1,0,0,0,10,0,0,0,0,,,,,,,,,,,,,, -ʳ,1.1,0,0,0,0,0,0,0,0,,,,,,,,,,,,,, -ڷʳ,1.1,0,0,0,0,0,0,0,0,,,,,,,,,,,,,, -ʳ,1.1,0,0,0,0,300,0,0,0,,,,,,,,,,,,,, -ˮʳ,1.1,0,0,0,0,0,700,450,0,,,,,,,,,,,,,, -ʳ,1.1,0,0,0,0,200,400,400,0,,,,,,,,,,,,,, -ʧʳ,1.1,0,0,0,0,0,0,0,0,,,,,,,,,,,,,, -ǻʳ,1.1,0,0,0,0,0,0,500,0,,,,,,,,,,,,,, -ðʳ,1.1,0,0,0,0,0,0,0,500,,,,,,,,,,,,,, -ǰټʳ,1.1,0,0,0,0,0,0,0,0,,,,,,,,,,,,,, -ʳ,1.1,0,0,0,0,0,0,0,1000,,,,,,,,,,,,,, -ʲ,1.1,0,0,0,0,0,0,0,0,,,,,,,,,,,,,, +ʳ,1.1,0,0,0,0,0,0,0,0,100,0,1500,0,100,1000,5,0,2,2,0,500,0,0 +Ӫʳ,1.1,0,0,0,0,500,0,0,1500,0,5,2000,100,0,500,5,10,0,2,0,500,0,0 +ʳ,1.1,0,0,0,15,0,0,0,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +׳ʳ,1.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,1,0,0,0,0 +Ѫѹʳ,1.1,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,1000,0,700,0 +Ƣθʳ,1.1,0,0,0,10,0,0,0,1500,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +ѧڶͯʳ,1.1,0,0,0,0,500,0,0,1000,50,0,2000,100,50,1000,0,10,0,2,0,400,0,0 +˥ʳ,1.1,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,1000,600,700,0 +¾ʳ,1.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0 +Ƚⶾʳ,1.1,0,0,0,10,0,0,500,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0 +֬Ѫ֢ʳ,1.1,0,0,0,10,0,0,0,0,0,3,0,0,0,0,0,0,0,0,1000,0,0,0 +ʳ,1.1,0,0,0,0,0,0,0,0,0,10,1000,0,0,0,0,5,0,0,0,0,0,0 +ȴʳ,1.1,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +ƶѪʳ,1.1,0,0,0,0,0,0,0,0,0,3,0,0,0,0,10,0,2,0,0,0,0,0 +Ѫʳ,1.1,0,0,0,15,0,500,0,0,50,3,0,0,0,0,7,0,1,0,0,0,0,0 +и,1.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +֢ʳ,1.1,0,0,0,0,0,200,700,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +θʳ,1.1,0,0,0,0,0,0,0,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +ʳ,1.1,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1000,0,0,0 +ʳ,1.1,0,0,0,0,0,0,0,0,0,0,500,0,0,0,0,0,0,0,0,0,0,0 +ڷʳ,1.1,0,0,0,0,0,0,0,0,0,0,1000,0,0,0,0,0,0,0,0,0,0,0.05 +ʳ,1.1,0,0,0,0,300,0,0,0,20,0,0,0,0,0,0,5,0,0,0,0,0,0 +ˮʳ,1.1,0,0,0,0,0,700,450,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +ʳ,1.1,0,0,0,0,200,400,400,0,50,0,700,0,50,500,0,5,1,0,0,400,0,0 +ʧʳ,1.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +ǻʳ,1.1,0,0,0,0,0,0,500,0,50,0,0,0,0,0,0,6,0,0,0,0,0,0 +ðʳ,1.1,0,0,0,0,0,0,0,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +ǰټʳ,1.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,1,0,0,0,0 +ʳ,1.1,0,0,0,0,0,0,0,1000,0,0,0,0,200,0,0,3,0,0,0,0,0,0 +ʲ,1.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,0,0 diff --git a/datas/职业 (bmi分类).xlsx b/datas/职业 (bmi分类).xlsx new file mode 100644 index 0000000000000000000000000000000000000000..bdd1d25c287ccbb91dc74a7b99061d9e6bb05aac GIT binary patch literal 10932 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 UieerQiDzJmk84JxdiwT%0C}m$K>z>% literal 0 HcmV?d00001 From 0dcde3dad89b6564624966a12f41cf2ef9f8514c Mon Sep 17 00:00:00 2001 From: ScorpioMiku <1056992492@qq.com> Date: Sun, 30 Sep 2018 18:56:40 +0800 Subject: [PATCH 03/13] 9-30 --- app/build.gradle | 1 - app/src/main/AndroidManifest.xml | 10 +- .../nutritionmaster/NutritionMaster.java | 17 + .../nutritionmaster/bean/MyUser.java | 14 +- .../nutritionmaster/modules/MainActivity.java | 66 +++- .../modules/login/LoginActivity.java | 352 ++++++++++++++++++ .../BodyInformationFragment.java | 12 +- .../nutritionmaster/utils/ConstantUtils.java | 3 + .../nutritionmaster/utils/WebUtils.java | 42 ++- .../main/res/drawable/ic_defualt_avatar.xml | 24 ++ app/src/main/res/layout/activity_login.xml | 77 ++++ app/src/main/res/layout/activity_main.xml | 32 +- app/src/main/res/values/strings.xml | 14 + build.gradle | 1 + 14 files changed, 619 insertions(+), 46 deletions(-) create mode 100644 app/src/main/java/com/example/ninefourone/nutritionmaster/modules/login/LoginActivity.java create mode 100644 app/src/main/res/drawable/ic_defualt_avatar.xml create mode 100644 app/src/main/res/layout/activity_login.xml diff --git a/app/build.gradle b/app/build.gradle index 5fcb4c4..e4fc5b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,6 @@ dependencies { implementation 'com.github.bumptech.glide:glide:3.8.0' implementation 'com.android.support:support-v4:19.1.0' - //okhttp 网络通信库 implementation 'com.squareup.okhttp3:okhttp:3.11.0' // json解析库 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 262fe2c..e2f9356 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -24,6 +24,11 @@ + + + + + - + + \ No newline at end of file diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/NutritionMaster.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/NutritionMaster.java index ff65488..738d7d5 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/NutritionMaster.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/NutritionMaster.java @@ -4,10 +4,13 @@ import android.app.Activity; import android.app.Application; import android.os.Bundle; +import com.example.ninefourone.nutritionmaster.bean.MyUser; + import com.orhanobut.logger.AndroidLogAdapter; import com.orhanobut.logger.Logger; + /** * Created by ScorpioMiku on 2018/8/26. */ @@ -16,11 +19,14 @@ public class NutritionMaster extends Application { public static NutritionMaster mInstance; private int appCount = 0; + public static MyUser user; + @Override public void onCreate() { super.onCreate(); mInstance = this; init(); + initUser(); } /** @@ -79,4 +85,15 @@ public class NutritionMaster extends Application { return appCount > 0; } + + /** + * 初始化用户信息 + */ + private void initUser() { + user = new MyUser(); + user.setNickName("ScorpioMiku"); + } + + + } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/MyUser.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/MyUser.java index 1ea341e..57a6b6b 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/MyUser.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/MyUser.java @@ -10,7 +10,7 @@ public class MyUser { * password : password * last_login : null * is_superuser : false - * username : okhttptest + * nickName : okhttptest * first_name : * last_name : * email : @@ -28,7 +28,7 @@ public class MyUser { private String password; private Object last_login; private boolean is_superuser; - private String username; + private String nickName; private String first_name; private String last_name; private String email; @@ -80,12 +80,12 @@ public class MyUser { this.is_superuser = is_superuser; } - public String getUsername() { - return username; + public String getNickName() { + return nickName; } - public void setUsername(String username) { - this.username = username; + public void setNickName(String nickName) { + this.nickName = nickName; } public String getFirst_name() { @@ -176,7 +176,7 @@ public class MyUser { ", password='" + password + '\'' + ", last_login=" + last_login + ", is_superuser=" + is_superuser + - ", username='" + username + '\'' + + ", nickName='" + nickName + '\'' + ", first_name='" + first_name + '\'' + ", last_name='" + last_name + '\'' + ", email='" + email + '\'' + diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/MainActivity.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/MainActivity.java index 22c45e4..ccca289 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/MainActivity.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/MainActivity.java @@ -2,7 +2,6 @@ package com.example.ninefourone.nutritionmaster.modules; import android.annotation.SuppressLint; import android.content.Intent; -import android.graphics.Color; import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; @@ -12,21 +11,24 @@ import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; -import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; +import android.widget.TextView; import com.ToxicBakery.viewpager.transforms.CubeOutTransformer; + import com.cb.ratingbar.CBRatingBar; import com.example.ninefourone.nutritionmaster.R; import com.example.ninefourone.nutritionmaster.adapter.HomePagerAdapter; import com.example.ninefourone.nutritionmaster.base.BaseActivity; +import com.example.ninefourone.nutritionmaster.bean.Occupation; import com.example.ninefourone.nutritionmaster.camera.FoodMaterialCamera; import com.example.ninefourone.nutritionmaster.modules.addinformation.AddActivity; -import com.example.ninefourone.nutritionmaster.modules.information.InformationActivity; import com.example.ninefourone.nutritionmaster.ui.NoScrollViewPager; +import com.example.ninefourone.nutritionmaster.utils.ConstantUtils; import com.example.ninefourone.nutritionmaster.utils.MessageUtils; import com.example.ninefourone.nutritionmaster.utils.PermissionUtils; +import com.example.ninefourone.nutritionmaster.utils.WebUtils; import com.flyco.tablayout.SlidingTabLayout; import com.github.mikephil.charting.charts.RadarChart; import com.github.mikephil.charting.components.Description; @@ -38,6 +40,7 @@ import com.github.mikephil.charting.data.RadarDataSet; import com.github.mikephil.charting.data.RadarEntry; import com.github.mikephil.charting.formatter.IndexAxisValueFormatter; import com.github.siyamed.shapeimageview.CircularImageView; +import com.google.gson.Gson; import com.miguelcatalan.materialsearchview.MaterialSearchView; import com.mxn.soul.flowingdrawer_core.ElasticDrawer; import com.mxn.soul.flowingdrawer_core.FlowingDrawer; @@ -46,12 +49,16 @@ import com.nightonke.boommenu.BoomButtons.OnBMClickListener; import com.nightonke.boommenu.BoomMenuButton; import com.orhanobut.logger.Logger; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; +import okhttp3.Call; +import okhttp3.Callback; +import okhttp3.Response; public class MainActivity extends BaseActivity { @@ -85,7 +92,10 @@ public class MainActivity extends BaseActivity { LinearLayout informationLayout; @BindView(R.id.title_layout) AppBarLayout titleLayout; - + @BindView(R.id.user_nick_name) + TextView userNickName; + @BindView(R.id.user_occupation_text) + TextView userOccupationText; @Override public int getLayoutId() { @@ -117,6 +127,7 @@ public class MainActivity extends BaseActivity { initViewPager(); initSearchView(); initBMB(); + initOccupations(); } /** @@ -151,7 +162,7 @@ public class MainActivity extends BaseActivity { super.onCreate(savedInstanceState); // TODO: add setContentView(...) invocation ButterKnife.bind(this); - Logger.d("oncreate"); +// Logger.d("oncreate"); setSupportActionBar(toolBar); getSupportActionBar().setDisplayShowTitleEnabled(false); askPermission(); @@ -159,7 +170,7 @@ public class MainActivity extends BaseActivity { @Override public boolean onCreateOptionsMenu(Menu menu) { - Logger.d("oncreateMenu"); +// Logger.d("oncreateMenu"); getMenuInflater().inflate(R.menu.menu_main, menu); MenuItem item = menu.findItem(R.id.id_action_search); searchView.setMenuItem(item); @@ -168,7 +179,7 @@ public class MainActivity extends BaseActivity { @Override public boolean onPrepareOptionsMenu(Menu menu) { - Logger.d("prepareMenu"); +// Logger.d("prepareMenu"); return super.onPrepareOptionsMenu(menu); } @@ -311,7 +322,14 @@ public class MainActivity extends BaseActivity { MessageUtils.MakeToast("权限赋予成功"); } - @OnClick({R.id.navigation_layout, R.id.add_information_button}) + + /** + * 点击事件 + * + * @param view + */ + + @OnClick({R.id.navigation_layout, R.id.add_information_button, R.id.information_layout, R.id.user_occupation_text}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.navigation_layout: @@ -321,12 +339,36 @@ public class MainActivity extends BaseActivity { Intent intent = new Intent(MainActivity.this, AddActivity.class); startActivity(intent); break; + case R.id.information_layout: + break; + case R.id.user_occupation_text: + break; } } - @OnClick(R.id.information_layout) - public void onViewClicked() { - Intent intent = new Intent(MainActivity.this, InformationActivity.class); - startActivity(intent); + /** + * 初始化职业常量 + */ + private void initOccupations() { + if (userOccupationText.getText().equals("请选择您的职业")) { + WebUtils.getAllOccupations(new Callback() { + @Override + public void onFailure(Call call, IOException e) { + e.printStackTrace(); + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + Occupation[] occupations = new Gson().fromJson(response.body().string(), Occupation[].class); + for (int i = 0; i < occupations.length; i++) { +// Logger.d(occupations[i].getOccupation_name()); + ConstantUtils.occupationList.add(occupations[i].getOccupation_name()); + } + + } + }); + } } + + } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/login/LoginActivity.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/login/LoginActivity.java new file mode 100644 index 0000000..c75dae3 --- /dev/null +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/login/LoginActivity.java @@ -0,0 +1,352 @@ +package com.example.ninefourone.nutritionmaster.modules.login; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.annotation.TargetApi; +import android.content.pm.PackageManager; +import android.support.annotation.NonNull; +import android.support.design.widget.Snackbar; +import android.support.v7.app.AppCompatActivity; +import android.app.LoaderManager.LoaderCallbacks; + +import android.content.CursorLoader; +import android.content.Loader; +import android.database.Cursor; +import android.net.Uri; +import android.os.AsyncTask; + +import android.os.Build; +import android.os.Bundle; +import android.provider.ContactsContract; +import android.text.TextUtils; +import android.view.KeyEvent; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.inputmethod.EditorInfo; +import android.widget.ArrayAdapter; +import android.widget.AutoCompleteTextView; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; + +import java.util.ArrayList; +import java.util.List; + +import com.example.ninefourone.nutritionmaster.R; + +import static android.Manifest.permission.READ_CONTACTS; + +/** + * A login screen that offers login via email/password. + */ +public class LoginActivity extends AppCompatActivity implements LoaderCallbacks { + + /** + * Id to identity READ_CONTACTS permission request. + */ + private static final int REQUEST_READ_CONTACTS = 0; + + /** + * A dummy authentication store containing known user names and passwords. + * TODO: remove after connecting to a real authentication system. + */ + private static final String[] DUMMY_CREDENTIALS = new String[]{ + "foo@example.com:hello", "bar@example.com:world" + }; + /** + * Keep track of the login task to ensure we can cancel it if requested. + */ + private UserLoginTask mAuthTask = null; + + // UI references. + private AutoCompleteTextView mEmailView; + private EditText mPasswordView; + private View mProgressView; + private View mLoginFormView; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_login); + // Set up the login form. + mEmailView = (AutoCompleteTextView) findViewById(R.id.email); + populateAutoComplete(); + + mPasswordView = (EditText) findViewById(R.id.password); + mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() { + @Override + public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) { + if (id == EditorInfo.IME_ACTION_DONE || id == EditorInfo.IME_NULL) { + attemptLogin(); + return true; + } + return false; + } + }); + + Button mEmailSignInButton = (Button) findViewById(R.id.email_sign_in_button); + mEmailSignInButton.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View view) { + attemptLogin(); + } + }); + + mLoginFormView = findViewById(R.id.login_form); + mProgressView = findViewById(R.id.login_progress); + } + + private void populateAutoComplete() { + if (!mayRequestContacts()) { + return; + } + + getLoaderManager().initLoader(0, null, this); + } + + private boolean mayRequestContacts() { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { + return true; + } + if (checkSelfPermission(READ_CONTACTS) == PackageManager.PERMISSION_GRANTED) { + return true; + } + if (shouldShowRequestPermissionRationale(READ_CONTACTS)) { + Snackbar.make(mEmailView, R.string.permission_rationale, Snackbar.LENGTH_INDEFINITE) + .setAction(android.R.string.ok, new View.OnClickListener() { + @Override + @TargetApi(Build.VERSION_CODES.M) + public void onClick(View v) { + requestPermissions(new String[]{READ_CONTACTS}, REQUEST_READ_CONTACTS); + } + }); + } else { + requestPermissions(new String[]{READ_CONTACTS}, REQUEST_READ_CONTACTS); + } + return false; + } + + /** + * Callback received when a permissions request has been completed. + */ + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, + @NonNull int[] grantResults) { + if (requestCode == REQUEST_READ_CONTACTS) { + if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + populateAutoComplete(); + } + } + } + + + /** + * Attempts to sign in or register the account specified by the login form. + * If there are form errors (invalid email, missing fields, etc.), the + * errors are presented and no actual login attempt is made. + */ + private void attemptLogin() { + if (mAuthTask != null) { + return; + } + + // Reset errors. + mEmailView.setError(null); + mPasswordView.setError(null); + + // Store values at the time of the login attempt. + String email = mEmailView.getText().toString(); + String password = mPasswordView.getText().toString(); + + boolean cancel = false; + View focusView = null; + + // Check for a valid password, if the user entered one. + if (!TextUtils.isEmpty(password) && !isPasswordValid(password)) { + mPasswordView.setError(getString(R.string.error_invalid_password)); + focusView = mPasswordView; + cancel = true; + } + + // Check for a valid email address. + if (TextUtils.isEmpty(email)) { + mEmailView.setError(getString(R.string.error_field_required)); + focusView = mEmailView; + cancel = true; + } else if (!isEmailValid(email)) { + mEmailView.setError(getString(R.string.error_invalid_email)); + focusView = mEmailView; + cancel = true; + } + + if (cancel) { + // There was an error; don't attempt login and focus the first + // form field with an error. + focusView.requestFocus(); + } else { + // Show a progress spinner, and kick off a background task to + // perform the user login attempt. + showProgress(true); + mAuthTask = new UserLoginTask(email, password); + mAuthTask.execute((Void) null); + } + } + + private boolean isEmailValid(String email) { + //TODO: Replace this with your own logic + return email.contains("@"); + } + + private boolean isPasswordValid(String password) { + //TODO: Replace this with your own logic + return password.length() > 4; + } + + /** + * Shows the progress UI and hides the login form. + */ + @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2) + private void showProgress(final boolean show) { + // On Honeycomb MR2 we have the ViewPropertyAnimator APIs, which allow + // for very easy animations. If available, use these APIs to fade-in + // the progress spinner. + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) { + int shortAnimTime = getResources().getInteger(android.R.integer.config_shortAnimTime); + + mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE); + mLoginFormView.animate().setDuration(shortAnimTime).alpha( + show ? 0 : 1).setListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE); + } + }); + + mProgressView.setVisibility(show ? View.VISIBLE : View.GONE); + mProgressView.animate().setDuration(shortAnimTime).alpha( + show ? 1 : 0).setListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + mProgressView.setVisibility(show ? View.VISIBLE : View.GONE); + } + }); + } else { + // The ViewPropertyAnimator APIs are not available, so simply show + // and hide the relevant UI components. + mProgressView.setVisibility(show ? View.VISIBLE : View.GONE); + mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE); + } + } + + @Override + public Loader onCreateLoader(int i, Bundle bundle) { + return new CursorLoader(this, + // Retrieve data rows for the device user's 'profile' contact. + Uri.withAppendedPath(ContactsContract.Profile.CONTENT_URI, + ContactsContract.Contacts.Data.CONTENT_DIRECTORY), ProfileQuery.PROJECTION, + + // Select only email addresses. + ContactsContract.Contacts.Data.MIMETYPE + + " = ?", new String[]{ContactsContract.CommonDataKinds.Email + .CONTENT_ITEM_TYPE}, + + // Show primary email addresses first. Note that there won't be + // a primary email address if the user hasn't specified one. + ContactsContract.Contacts.Data.IS_PRIMARY + " DESC"); + } + + @Override + public void onLoadFinished(Loader cursorLoader, Cursor cursor) { + List emails = new ArrayList<>(); + cursor.moveToFirst(); + while (!cursor.isAfterLast()) { + emails.add(cursor.getString(ProfileQuery.ADDRESS)); + cursor.moveToNext(); + } + + addEmailsToAutoComplete(emails); + } + + @Override + public void onLoaderReset(Loader cursorLoader) { + + } + + private void addEmailsToAutoComplete(List emailAddressCollection) { + //Create adapter to tell the AutoCompleteTextView what to show in its dropdown list. + ArrayAdapter adapter = + new ArrayAdapter<>(LoginActivity.this, + android.R.layout.simple_dropdown_item_1line, emailAddressCollection); + + mEmailView.setAdapter(adapter); + } + + + private interface ProfileQuery { + String[] PROJECTION = { + ContactsContract.CommonDataKinds.Email.ADDRESS, + ContactsContract.CommonDataKinds.Email.IS_PRIMARY, + }; + + int ADDRESS = 0; + int IS_PRIMARY = 1; + } + + /** + * Represents an asynchronous login/registration task used to authenticate + * the user. + */ + public class UserLoginTask extends AsyncTask { + + private final String mEmail; + private final String mPassword; + + UserLoginTask(String email, String password) { + mEmail = email; + mPassword = password; + } + + @Override + protected Boolean doInBackground(Void... params) { + // TODO: attempt authentication against a network service. + + try { + // Simulate network access. + Thread.sleep(2000); + } catch (InterruptedException e) { + return false; + } + + for (String credential : DUMMY_CREDENTIALS) { + String[] pieces = credential.split(":"); + if (pieces[0].equals(mEmail)) { + // Account exists, return true if the password matches. + return pieces[1].equals(mPassword); + } + } + + // TODO: register the new account here. + return true; + } + + @Override + protected void onPostExecute(final Boolean success) { + mAuthTask = null; + showProgress(false); + + if (success) { + finish(); + } else { + mPasswordView.setError(getString(R.string.error_incorrect_password)); + mPasswordView.requestFocus(); + } + } + + @Override + protected void onCancelled() { + mAuthTask = null; + showProgress(false); + } + } +} + diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/bodyinformation/BodyInformationFragment.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/bodyinformation/BodyInformationFragment.java index 9cc37d4..ec3c392 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/bodyinformation/BodyInformationFragment.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/bodyinformation/BodyInformationFragment.java @@ -56,6 +56,8 @@ public class BodyInformationFragment extends BaseFragment { private ISportStepInterface iSportStepInterface; + private ServiceConnection coon; + @Override public int getLayoutResId() { @@ -94,7 +96,7 @@ public class BodyInformationFragment extends BaseFragment { //开启计步 Intent stepCounterStart = new Intent(getActivity(), TodayStepService.class); getActivity().startService(stepCounterStart); - getActivity().bindService(stepCounterStart, new ServiceConnection() { + coon = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { iSportStepInterface = ISportStepInterface.Stub.asInterface(service); @@ -111,7 +113,8 @@ public class BodyInformationFragment extends BaseFragment { public void onServiceDisconnected(ComponentName name) { } - }, Context.BIND_AUTO_CREATE); + }; + getActivity().bindService(stepCounterStart, coon, Context.BIND_AUTO_CREATE); } /** @@ -172,4 +175,9 @@ public class BodyInformationFragment extends BaseFragment { ChartDrawer.initSingleLineChart(stepLineChart, stepPointValues, "步数"); } + @Override + public void onDestroy() { + super.onDestroy(); +// getActivity().unbindService(coon); + } } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/ConstantUtils.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/ConstantUtils.java index f1bc04c..daa6229 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/ConstantUtils.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/ConstantUtils.java @@ -51,4 +51,7 @@ public class ConstantUtils { {"烫的", "冷的", "没有特别喜欢的"}, {"查看"} }; + + public static ArrayList occupationList = new ArrayList<>(); + } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtils.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtils.java index 2619b3c..bfce3fe 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtils.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtils.java @@ -3,7 +3,12 @@ package com.example.ninefourone.nutritionmaster.utils; import android.support.annotation.Nullable; +import com.example.ninefourone.nutritionmaster.bean.Occupation; +import com.google.gson.Gson; +import com.orhanobut.logger.Logger; + import java.io.IOException; +import java.util.Arrays; import okhttp3.Call; import okhttp3.Callback; @@ -43,6 +48,7 @@ public class WebUtils { /** * 获取count个随机菜谱,在回调中解析为一个Menu数组 + * * @param count * @param callback */ @@ -126,6 +132,12 @@ public class WebUtils { mClient.newCall(request).enqueue(callback); } + public static void getAllOccupations(Callback callback) { + OkHttpClient mClient = new OkHttpClient(); + Request request = new Request.Builder().url("http://120.77.182.38/occupation/").build(); + mClient.newCall(request).enqueue(callback); + } + /** * 获取体质需要的食材 * { @@ -188,11 +200,11 @@ public class WebUtils { mClient.newCall(request).enqueue(callback); } - public static void changeUserOccupation(String username,String password, String occupation, Callback callback) { + public static void changeUserOccupation(String username, String password, String occupation, Callback callback) { String url = "http://120.77.182.38/myuser/" + username + "/"; RequestBody formBody = new FormBody.Builder() .add("username", username) - .add("password",password) + .add("password", password) .add("occupation", occupation) .build(); @@ -205,11 +217,11 @@ public class WebUtils { mClient.newCall(request).enqueue(callback); } - public static void changeUserPhysique(String username,String password, String physique, Callback callback) { + public static void changeUserPhysique(String username, String password, String physique, Callback callback) { String url = "http://120.77.182.38/myuser/" + username + "/"; RequestBody formBody = new FormBody.Builder() .add("username", username) - .add("password",password) + .add("password", password) .add("physique", physique) .build(); @@ -315,17 +327,19 @@ public class WebUtils { } });*/ - WebUtils.changeUserOccupation("updatatest","1234" ,"气虚质", new Callback() { - @Override - public void onFailure(Call call, IOException e) { - e.printStackTrace(); - } +// WebUtils.changeUserOccupation("updatatest","1234" ,"气虚质", new Callback() { +// @Override +// public void onFailure(Call call, IOException e) { +// e.printStackTrace(); +// } +// +// @Override +// public void onResponse(Call call, Response response) throws IOException { +// System.out.println(response.body().string()); +// } +// }); + - @Override - public void onResponse(Call call, Response response) throws IOException { - System.out.println(response.body().string()); - } - }); } } diff --git a/app/src/main/res/drawable/ic_defualt_avatar.xml b/app/src/main/res/drawable/ic_defualt_avatar.xml new file mode 100644 index 0000000..4bb1d4e --- /dev/null +++ b/app/src/main/res/drawable/ic_defualt_avatar.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml new file mode 100644 index 0000000..068a197 --- /dev/null +++ b/app/src/main/res/layout/activity_login.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + +