manual inicio android
TRANSCRIPT
-
7/23/2019 Manual Inicio Android
1/276
"#$%#& '$()(* +$,-*(,.#/*/ 01/()*/ 2#-# )-3#- %$# #2&()#)(4$+$,-*(, )*$ 35362&*/7
8& 2-3/3$93 ,*)%63$9* 9-#9# ,3 ($9-*,%)(- #& #&%6$* #& ,3/#--*&&* ,3 #2&()#)(*$3/+$,-*(,: ;%(1$,*&* 3$ 3& ,3/#--*&&* ,3 %$# #2&()#)(4$ )*$ #$,* 3& +?@ A+$,-*(, ?3
-
7/23/2019 Manual Inicio Android
2/276
!
!"#$" &' ()*+'*,&)
-./0 '1 2*&3),&4 5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 6
8& /(/936# *23-#9(/3,&"& ? 9'3:,1)1 55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 ;@
K*$)329* ,3 /3;%-(,#, 3$ +$,-*(, 77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 EC
K*$)329* ,3 23-6(/* 3$ +$,-*(, 77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 EC
A*1+"$"(,B* 5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 ;C
K*$/(,3-#)(*$3/ 2-3
-
7/23/2019 Manual Inicio Android
3/276
#
A*+'>3"(,B* &' 27! &'*+3) &' D($,91' 5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 C;
'$93;-#)(4$ ,3 +$,-*(, ,3$9-* ,3 23-/23)9(
-
7/23/2019 Manual Inicio Android
4/276
$
85362&* ,3 -3)%-/* 777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 FE
K#&(U()#,*-3/ ,3 -3)%-/*/ 777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 FE
',/ ,3 -3)%-/*/ W L75#3'>"3 ,*+'3"((,B* 5555555555555555555555555555555555555555555555555555555555555555555555555555 QW
K#60(#- W*%9 7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 Fb
+;-3;#$,* 0*94$ ($93-#)9(
-
7/23/2019 Manual Inicio Android
5/276
%
DJ'3(,(,)K L3'"3 /* ()*8'3+,&)3 &' +':9'3"+/3"5 5555555555555555555555555555555555555555555555555555555555555555555 WC
K-3#- 2-*W3)9* 7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 b[
K-3#- #9-(0%9*/ 7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 bb
Q/#$,* 3& 3,(9*- ,3 W*%9/ 77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 b\
+;-3;#-
-
7/23/2019 Manual Inicio Android
6/276
&
A*+'3"(+/"3 ()* /*" \"1' &' 7"+)1 55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 ;;
+;-3;#- -3)%-/*/ # #2&()#)(4$ 777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 EEX
?(/3c* ,3 W*%9/ 7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 ECE
+;-3;#- )/3/ 2#-# 6#$35* ,3 ($93-#))(4$ )*$ 0#/3 ,3 ,#9*/ 777777777777777777777777777777777777777777777777777777777777 ECC
!3"O"3 /*" 3/+" 55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 ;C@
!"#$%&'()( &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& +,-
./0012"#/031"12"14&'()( &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& +,5
67(8%3#412"#/0&'()(&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& +,9
.41(2#:0 ;1 1$1
L3'"3 /* $'(+)3 .S 555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 ;X;
ij%h /*$ &*/ )4,(;*/ jLk 777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 E]C
H(0-3-d# Mf($; 7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 E]C
D14')>3_P,(" '* 2*&3),& 555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 @#)(4$ 93$36*/ ,(/2*$(0&3/k 77777777777777777777777777777777777777777777777777777777777777777777777 CDX
ij%h 2-*#)(4$ 3/ 635*- 2#-# 6( #2&()#)(4$k 7777777777777777777777777777777777777777777777777777777777777777 CED
i8/91 ,(/2*$(0&3 W #)9($' 299=(3,9+ ? /1) &'
E)$$'? a3":'T)3` '* 2*&3),& 5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 @@;
P*&&3Wg %$ )&(3$93 l@@. 2#-# +$,-*(,7 77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 CC\
+;-3;#$,* H(0-3-d# 7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 CC]
.-32#-#$,* P*&&3W 777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 CCX
K*$9($%#6*/ )*$ 3& ,(/3c* 7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 C[D
7/;1$/ D14%/0( &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& F,I
-
7/23/2019 Manual Inicio Android
7/276
'
.=%"/5;8S &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& F??
.=#;(;/ 2/0 1$ T=12/ &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& F?-
!"#$%&'()' 7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 Cb]
./$/41% ;1 "#8/ 841;1"14
-
7/23/2019 Manual Inicio Android
8/276
(
-
7/23/2019 Manual Inicio Android
9/276
)
!"#$ &' ()*+,-*.
!" $%$&'() *+',)&%-* ./0,*%0
+$,-*(, 3/ %$ /(/936# *23-#9(
-
7/23/2019 Manual Inicio Android
10/276
*
8& /(/936# +$,-*(, 3/ %$# )*62&39# 2( ,3 /*U9a#-3: =%3 /%3&3 3/9#- ,(
-
7/23/2019 Manual Inicio Android
11/276
!+
6//A$1*U-3)3 3& /3-#$ #2&()#)(4$ 6//A$1 D$(N &* =%3
&3/ 23-6(93 )*62-#- 3 ($/9#- / #2&()#)(*$3/ ,3& /3-#,*/ 2#-# #-)Z(
-
7/23/2019 Manual Inicio Android
12/276
!!
+60*/ '?8/ )*$9(3$3$ 9*,# U%$)(*$#&(,#, $3)3/#-(# 2#-# )-3#-: )*62(-: ,32%-#- W ,3/2&3;#-
#2&()#)(*$3/ ,3 +$,-*(,7 @#60(h$ 23-6(93$ # &*/ ,3/#--*&,*-3/ )-3#- 3 ($()(#- &*/ ,(/2*/(9(
-
7/23/2019 Manual Inicio Android
13/276
!#
H*/ #-)Z(
-
7/23/2019 Manual Inicio Android
14/276
!$
/3 2-3/3$9#$ #& %/%#-(* #$93/ ,3 ($/9#- #2&()#)(4$7 8& %/%#-(* 9(3$3 =%3 ,3)(,(- /( 3/9*/ 23-6(/*/
/3-1$ *9*-;#,*/ # #2&()#)(4$7
I( 3& %/%#-(* ,3$(3;# %$# #%9*-(>#)(4$ $3)3/#-(#: #2&()#)(4$ -3)(*$#,# $* /3 2%3,3 ($/9#-7 H#
)*62-*0#)(4$ ,3 #%9*-(>#)(4$ /4&* /3 -3#&(># ,%-#$93 ($/9#)(4$: &*/ 23-6(/*/ $* 2%3,3$ /3-
$3;#,*/ % *9*-;#,*/ ,3/2%h/ ,3 ($/9#)(4$7
Q$# #2&()#)(4$ +$,-*(, ,3)-# &*/ 23-6(/*/ $3)3/#-(*/ 3$ /% #-)Z(
-
7/23/2019 Manual Inicio Android
15/276
!%
01/234 #
)7 +Z*-# Z#)3- )&()T 3$ 3& 0*94$ 6*/9-#,* 3$ '6#;3$ [: W 3/23-#- # ,3/)#-;#- 2#-#
($/9#-&*
01/234 $
9,'+),), F
E7 .#-# )*$/(,3-#)(*$3/ ,3 3/93 6#$%#& /3 9-#0#5#-1 )*$
-
7/23/2019 Manual Inicio Android
16/276
!&
01/234 &
F7 H# C W &%3;* )&()T #& 0*94$
04=./>>: )*6* /3 6%3/9-# 3$ '6#;3$ ]
-
7/23/2019 Manual Inicio Android
17/276
!'
01/234 (
07 8/23-#6*/ %$ 9(362* 6(3$9-#/ ,3/)#-;# 3& /,T ,3 ($93-$39 W /3 ($/9#
@3-6($#,# ,3/)#-;# 3 ($/9#)(4$ )3--#6*/ 3& 5467-86 9:;
-
7/23/2019 Manual Inicio Android
18/276
!(
+P?/ &3 23-6(93$ 2-*0#- /%/ #2&()#)(*$3/ ,3 +$,-*(, 3$ ,(U3-3$93/
-
7/23/2019 Manual Inicio Android
19/276
!)
E/F>/ !D 5./G-= ?/7/ 3> 31H>/6-7 63 68=?-=8.8I-= 63 5467-86
5E5JK :L9MN0OM0P,
5QEuL,ELN "+f'"'M+ 8H 8"QH+?JL7
MENQuR!! K+"N'+ H+ JL'8G@+K'vG ?8H 8"QH+?JL ?8 lJL'MJG@+H + P8L@'K+H O P'K8P8LI+ 7
R) 8GK'8G?8 O +.+V+ H+ L8?
7**8"' -$H ./0,*%0 .@#,* 6%)Z* 61/ -12(,*7
?3/2%h/ 2-3/(*$#- 3& 0*94$ JY7 8/9* )-3#-1 )*$U(;%-#)(4$ ,3& +P? W &* ,3/2&3;#-1 0#5* &(/9# ,3
,(/2*/(9(
-
7/23/2019 Manual Inicio Android
23/276
##
F/%B%), &? .@#,*: $* ,393$3- 3& +P? ,%-#$93 3& ,3/#--*&&*7 I( /3 )#60(# #&;* 3$ #2&()#)(4$ W =%(3-3
2-*0#- %$# $%3
-
7/23/2019 Manual Inicio Android
25/276
#%
.#-# )-3#- %$ $%3
-
7/23/2019 Manual Inicio Android
26/276
#&
.%&/3 3& 0*94$ G3`9 W /3&3))(*$3 2$9(& N$T+)9(
-
7/23/2019 Manual Inicio Android
27/276
#'
'$9-*,%)3 &*/ /(;%(3$93/ ,#9*/ 3$ 3& )%#,-* ,3 ,(1&*;* 2#-# 2$9(& N$T+)9(/ $D T/>-73= ?/7/ >/ ?>/4.8>>/
O/7/13.37 T/>H3
+)9(
-
7/23/2019 Manual Inicio Android
28/276
#(
.%&/3 3& 0*94$ _($(/Z7 8& #/(/93$93 &3 2%3,3 23,(- =%3 ($/9#&3 0(0&(*93)# ,3 )*62#9(0(&(,#,7 I( 3/ #/d:
/3&3))(*$3 2#-# ($/9#-
-
7/23/2019 Manual Inicio Android
29/276
#)
!"#$%&%&'( *+&% ,- -.,&%-%&/+ 0+1$'&1
!"#"$%&%
F/%B%), .@#- &*/ )*62*$3$93/ ,3 ($93-U#> ,3
%/%#-(* 2#-# ,(U3-3$93/ )*$U(;%-#)(*$3/ ,3 ,(/2*/(9(?B%E/
H#/ )#1K%/*$ a(,;39/ ,3 ($93-U#> ,3 %/%#-(*: 2*- 35362&*: 0*9*$3/ * )#62*/ ,3 93`9*7 H#/ #-/3 2#-# )*$U(;%-#- /% #2#-(3$)(# W )*62*-9#6(3$9*7
+ _#1K64/=83/ -3/2*$/#0&3 ,3 *-;#$(>#)(4$ ,3 *9-#/
-
7/23/2019 Manual Inicio Android
37/276
$'
android.view.ViewGroup=%3 3`9(3$,3 AZ3-3,#B ,3 )/3 android.view.View =%3 3/
)/3 0#/3 2#-# /
-
7/23/2019 Manual Inicio Android
38/276
$(
@*,#/ / #)9(
-
7/23/2019 Manual Inicio Android
39/276
$)
!" $%&'(')*+, -) .&-/,'-
@',$%E/ : +)R?'&'
8& #9-(0%9* ,3 3!(4!5* ,3U($3 3& 2#=%393 0#/3 2#-# &*/ *0539*/ ^#
-
7/23/2019 Manual Inicio Android
40/276
$*
H# /3))(4$ %/3/n/,T 3$ 3& 6#$(U(3/9* 93 23-6(93 3/23)(U()#- 3& minSdkVersionW targetSdkVersion
/ %D -7 :3=@78?@8U4
6($I,TP3-/(*$
?3U($3 # )*6* U(&9-* 3$ V**;&3 .W: 3/ ,3)(-: %$ %/%#-(* $* 2%3,3 ($/9#- #2&()#)(4$
3$ %$ ,(/2*/(9(
-
7/23/2019 Manual Inicio Android
41/276
%+
8$ -3#&(,#, 3/9# *2)(4$ /3 %9(&(># 6%W 2*)*: )*6* %$# #2&()#)(4$ ($/9#,# 3$ 3& #&6#)3$#6(3$9*
3`93-$* /3 ,39(3$3 %$# =%3 3& ,(/2*/(9(
-
7/23/2019 Manual Inicio Android
42/276
%!
N3@H7=-= R->637 :3=@78?.8-4
/ 2-*2(3,#,3/ #-0(9-#-(#/ ,3 *0539*/ )*$ 3& 9(362*7
L#a ,#9# R-3/R-#a
+-)Z(
-
7/23/2019 Manual Inicio Android
43/276
%#
I( /3 #;-3;# %$ $%3
-
7/23/2019 Manual Inicio Android
44/276
%$
H*/ ,3/#--*&,*-3/ /*$ &(0-3/ ,3 ,3/#--*&- /%/ 2-*2(*/
-
7/23/2019 Manual Inicio Android
45/276
%%
@Overrideprotected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);
}
}
-
7/23/2019 Manual Inicio Android
46/276
%&
tools:context=".MainActivity">
5*/$%0',)B%*/'$ 0' 0'$'(+'P* B*/ "):*?&$
K1&)%$,* 3& W*%9 W 3*-#$,* /
-
7/23/2019 Manual Inicio Android
47/276
%'
+/(;$#- 3& $*60-3 onClick # 2-*2(3,#, android:onClick ,3 9% Button7
E8?
8/9* ,3U($3 =%3 %$ 6h9*,* public void onClick (View view)/3-1 ,* 3$ #)9(
-
7/23/2019 Manual Inicio Android
48/276
%(
Q/# 3& 6h9*,* text.getText().toString()2#-# &33- )#,3$# =%3 /3 3$)%3$9-# 3$ 3& )#62* 3,(9*- W
#;-3;# 3& 93`9* #& 63$/#53 ,3 9% @*#/97
@)"%0), ('/$)G' '(',8'/&'
L3($()(3 #2&()#)(4$ W #/3;%-#- =%3 3& Toast6%3/9-# 3& 93`9* =%3 )*$9(3$3 3& )#62* EditText7
!"#$%&%&'( *+,-.&$ #+ -/ 0&12/ 3#- -/4'.2 #+
!"#$%& (# #)#*+*",-
.8 ,' 8) , ,) 0% * 8, *? + : ,)0 %* >?& &* /$ )" ") :* ?&
I3;%(- %/#$,* 3& 2-*W3)9* ,3$*6($#,* com.utm.primero7 8$ 3/93 353-)()(* /3 #;-3;# -#,(* 0%99*$/
#& W*%97 ?323$,(3$,* ,3 /3&3))(4$ ,3& %/%#-(* 3& #)*6*,* ,3 &*/ -#,(* 0%99*$/ )#60(# ,3 Z*-(>*$9#&
#
-
7/23/2019 Manual Inicio Android
49/276
%)
.#-# #/(;$#- ',/ # /
-
7/23/2019 Manual Inicio Android
50/276
%*
5)(>%), ") *,%'/&)B%E/ 0'" ,)0%* 8,*?+ 0%/)(QB)('/&'
K#60(#- 3& 6h9*,* onCreate() 3$ 9% #)9(
-
7/23/2019 Manual Inicio Android
51/276
&+
break;}
}});
@)"%0),
K*--3- #2&()#)(4$ W /3&3))(*$#- &*/ ,(U3-3$93/ -#,(* 0%99*$/7 +/3;%-#-/3 =%3 *-(3$9#)(4$ ,3 &*/
0*9*$3/ )#60(3 3$ 0#/3 # /3&3))(4$7
!"#$%& ()"&*+,)"
D'6','/B%)$ ) ,'B?,$*$ '/ BE0%8*
H# )/3 Reosurces 23-6(93 #))3,3- # -3)%-/*/ ($,(
-
7/23/2019 Manual Inicio Android
52/276
&!
TextView textView = (TextView) findViewById(R.id.action_settings);
// TODOdo something with the TextView}
}
@#60(h$ 3/ 2*/(0&3 -3#&(>#- 0m/=%3,#/ 3$ %$# 53-#-=%d# ,3
-
7/23/2019 Manual Inicio Android
53/276
@#60(h$ /3 2*,-d# #&6#)3$#- ,#9*/ 3/9-%)9%-#,*/ 3$ )#-239# /res/raw: 23-* 3/ )*$/(,3-#,# 0%3$#
2-#)9()# %/#- 3& ,(-3)9*-(* assets2#-# 9#&3/ ,#9*/7
.B B'$)/ 0* )$ $'&$
.#-# #))3/#- # 3/9*/ ,#9*/ /3 Z#)3
-
7/23/2019 Manual Inicio Android
54/276
&$
.$ %8 /) /0 * ") %()8' / ) ?/ -%' N %( )8 '/H
+/(;$#- 3& #-)Z(
-
7/23/2019 Manual Inicio Android
55/276
&%
O7-?836/6 T/>-7
G*60-3 2#=%393 )*67%967#$,-*(,7)*$
-
7/23/2019 Manual Inicio Android
56/276
&&
5,'), )&,%>?&*$
+$,-*(, 23-6(93 )-3#- -3)%-/*/ 3/919()*/ 2#-# ,3U($(- #9-(0%9*/: 2*- 35362&*: I9-($;/ * )*&*-3/7 8/*/
#9-(0%9*/ 2%3,3$ /3- %/#,*/ 3$ *9-*/ #-)Z(
-
7/23/2019 Manual Inicio Android
57/276
&'
'$;-3/#- myColor)*6* 3& $*60-3 W #F5F5F5 )*6* 3& -7
)3&/(%/ # K3&/(%/
U#Z-3$Z3(9 # _#Z-3$Z3(9
)#&) K#&)%-
E/F>/ )D 5.78FH.-= 9.7842
K#60(#- # -32-3/3$9#)(4$ f"H W
-
7/23/2019 Manual Inicio Android
58/276
&(
I3&3))(*$#- 3& #-)Z(
-
7/23/2019 Manual Inicio Android
59/276
-
7/23/2019 Manual Inicio Android
60/276
&*
+--#/9-#- %$ N%99*$ ,3/,3 /3))(4$ _*-6 e(,;39/ ,3$9-* ,3& W*%97
8& -3/%&9#,* ,303-d# ,3 &%)(- /(6(- # /(;%(3$93 )#29%-# ,3 2#$9#&
K#60(#$,* # 23/9#c# f"H ,3& #-)Z(
-
7/23/2019 Manual Inicio Android
61/276
'+
android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity">
,-./
.*,-d#$
-
7/23/2019 Manual Inicio Android
62/276
'!
H*/ #9-(0%9*/ ,3 %$#
-
7/23/2019 Manual Inicio Android
63/276
'#
android:ems="10"android:inputType="numberSigned|numberDecimal">
@*,*/ &*/ )*62*$3$93/ ,3 ($93-U#> ,3 %/%#-(* 3/91$ )*$93$(,*/ 3$ %$ W*%97 +/(;$#- 3& )*&*- ,3
U*$,* # 3/93 Layout. I3&3))(*$#- K*&*- W 3$9*$)3/ /3&3))(*$#- myColor3$ 3& ,(#&*;*7 K*6* %$
35362&* /3 2%3,3 %/#- m&9(6# &d$3# ,3& /(;%(3$93 /3;63$9* ,3 f"H7
+ )*$9($%#)(4$ 3& 0#)T;-*%$, ,303-d# ,3 )#60(#- #& )*&*- whitesmoke 7 .*,-d# /3- ,(U()(& $*9#-
,(U3-3$)(#7
K#60(#- # 9#0 activity_main.xml W
-
7/23/2019 Manual Inicio Android
64/276
'$
android:layout_marginTop="41dp">
5,'), B")$' ?&%"%&),%)
K-3#- /(;%(3$93 )/3 %9(&(9#-(# 2#-# )*$
-
7/23/2019 Manual Inicio Android
65/276
'%
importandroid.view.View;importandroid.widget.EditText;importandroid.widget.RadioButton;importandroid.widget.Toast;
publicclassMainActivity extendsActivity {
privateEditText texto;
@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);texto= (EditText) findViewById(R.id.editText1);
}
@OverridepublicbooleanonCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it ispresent.
getMenuInflater().inflate(R.menu.main, menu);returntrue;}
publicvoidonClick(View view){switch(view.getId()) {caseR.id.button1:
RadioButton celsiusBtn = (RadioButton)findViewById(R.id.radio0);
RadioButton fahrenheitBtn = (RadioButton)findViewById(R.id.radio1);
if(texto.getText().length() == 0){Toast.makeText(this, "Por favor ingrese un nmero
vlido", Toast.LENGTH_LONG).show();return;
}floatinputValue =
Float.parseFloat(texto.getText().toString());if(celsiusBtn.isChecked()){
texto.setText(String.valueOf(Convertidor.convertirFahrenheitACelsius(inputValue)));
celsiusBtn.setChecked(false);fahrenheitBtn.setChecked(true);
}else{
texto.setText(String.valueOf(Convertidor.convertirCelsiusAFahrenheit(inp
utValue))); fahrenheitBtn.setChecked(false);celsiusBtn.setChecked(true);
}break;
}}
}
-
7/23/2019 Manual Inicio Android
66/276
'&
,-./
8& onClick 3/ ,* 2*- %$ )&()T 3$ 3& 0*94$ # )#%/# ,3 2-*2(3,#, onClick ,3& 0*94$7
F/%B%), )+"%B)B%E/
K&()T ,3-3)Z* /*0-3 3& 2-*W3)9* W /3&3))(*$#- L%$n+/ x +$,-*(, +22&()#9(*$7 I( %$ 36%,*- #m$ $* 3/91)*--(3$,*: 3$9*$)3/ /3 ($()(#-17
8/)-(0(- %$ $m63-*: /3&3))(*$#- )*$
-
7/23/2019 Manual Inicio Android
67/276
''
56I37.34@8/
RelativeLayout 3/ %$ 6#$35#,*- ,3 W*%9 )*62&35* W ,303-d# /3- /*#63$93 %/#,* /(
)*62&35(,#, ,3& W*%9 &* -3=%(3-37
.& ,% >? &* $ 0' " ") :* ?&
@*,*/ &*/ W*%9/ 23-6(93$ #& ,3/#--*&,*- ,3U($(- &*/ #9-(0%9*/7 H*/ Z(5*/ 2%3,3$ 9#60(h$ ,3U($(-
#9-(0%9*/ &*/ )%#&3/ 2%3,3$ /3- 3.- S /4@X-
5.78FH.- :3=@78?@8U4
#$,-*(,gW*%9sa(,9Z ?3U($3 3& #$)Z* ,3& a(,;397
#$,-*(,gW*%9sZ3(;Z9 ?3U($3 3& #&9* ,3& a(,;397
H*/ a(,;39/ 2%3,3$ %/#- 9#6#c*/ U(5*/: 3/9* 3/: )*$ ,3U($()(4$ dp: 2*- 35362&*: 100dp7 "(3$9-#/ dp
3/ %$ 9#6#c* U(5* 3/93 /3 3/)#-1 )*$ / )*$U(;%-#)(*$3/ ,3 ,(U3-3$93/ ,(/2*/(9(
-
7/23/2019 Manual Inicio Android
68/276
'(
L,)('S):*?&
FrameLayout 3/ %$ 6#$35#,*- ,3 W*%9 3& )%#& ,(0%5# 9*,*/ &*/ 3&363$9*/ Z(5*/ %$* #--(0# ,3& *9-*7
8/93 23-6(93 )-3#- #;-#,#0&3/ 3U3)9*/
-
7/23/2019 Manual Inicio Android
69/276
')
P3-9()#& 2*,-d# -3/%&9#- 3$ %$ W*%9 )*6* /3 6%3/9-# 3$ /(;%(3$93 (6#;3$7
LinearLayout 2%3,3 /3- #$(,#,* 2#-# &*;-#- W*%9/ 61/ )*62&35*/7
LinearLayout /*2*-9# #/(;$#- %$ 23/* ($,(
-
7/23/2019 Manual Inicio Android
70/276
'*
7,%0S):*?&
GridLayout U%3 ($9-*,%)(,* )*$ +$,-*(, F7D7 8/93 W*%9 23-6(93 *-;$(>#- %$#
-
7/23/2019 Manual Inicio Android
71/276
(+
android:layout_column="1"android:layout_columnSpan="2"android:layout_row="1"android:ems="10"/>
8/9* )-3# %$# ($93-U#> ,3 %/%#-(* )*6* 3$ /(;%(3$93 9*6# ,3 2#$9#&
-
7/23/2019 Manual Inicio Android
72/276
(!
;B,*""@%'N
H# )/3 ScrollView 2%3,3 /3- %/#,# 2#-# )*$93$3- %$ View =%3 2*,-d# /3- 61/ ;-#$,3 * #$)Z# =%3
2#$9#& 8$ 3/93 )#/* ScrollView ,3/2&3;#-1 %$# 0#--# ,3 /)-*&& 2#-# ,3/2>#-/3 3$ 3& )*$93`9*7
.*- /%2%3/9* 3/93 View 2%3,3 /3- %$ W*%9 =%3 2%3,3 )*$93$3- *9-*/ 3&363$9*/7
8& /(;%(3$93 )4,(;* 6%3/9-# %$ 35362&* ,3 %$ #-)Z(
-
7/23/2019 Manual Inicio Android
73/276
(#
android:orientation="vertical">
K#60(#- )/3 ScrollViewActivity # )*6* /3 6%3/9-# 3& /(;%(3$93 )4,(;*7
package de.vogella.android.scrollview;
import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.TextView;
-
7/23/2019 Manual Inicio Android
74/276
-
7/23/2019 Manual Inicio Android
75/276
(%
-
7/23/2019 Manual Inicio Android
76/276
(&
!M+*,&), )+"%B)B%*/'$
H#/ #2&()#)(*$3/ #$,-*(, ,303$ /3- U(-6#,#/ #$93/ ,3 =%3 /3#$ ($/9#,#/ 3$ %$ ,(/2*/(9(
-
7/23/2019 Manual Inicio Android
77/276
('
?3$9-* ,3 &*/ 6h9*,*/ ,3 ,#/ ,3& )()&* ,3
-
7/23/2019 Manual Inicio Android
78/276
((
l#W #)(4$ ,3 0#/3/ ,3 ,#9*/ 3$ +$,-*(,g
E7 ?(/3c#- W )-3#- 0#/3 ,3 ,#9*/ ,3 6#$3-# 3`93-$# %/#$,* #&;%$# #2&()#)(4$ A3$ 3/93 )#/*
G##)4$ ,3 )/3 SQLiteOpenHelper 2#-# )-3#- 3/9-%)9%-# ,3 0#/3 ,3 ,#9*/ ,3/,3
3& )4,(;*7
5,'), ") O< B*/ ;ZS%&' '/ ])-%B)&H
E7 H* 2-(63-* =%3 Z#W =%3 Z#)3- 3/ #0-(- 3& G#
-
7/23/2019 Manual Inicio Android
79/276
()
01/234 *
C7 8/)*;3- %$ $*60-3 # )*$3`(4$ 3$ $%3/9-* )#/* /3 -1 F6[/>H14-=C 3$ /3))(4$ UN81
/3&3))(*$#- *2)(4$ G3a IjH(93 [: W 3$ /3))(4$ ,3 3("(^(%1 L#$1,3036*/ ,3 3/23)(U()#- %$
&%;#- ,*$,3 ;%#-,#-36*/ $%3/9-# 0#/3 ,3 ,#9*/ -3)(3$9363$93 )-3#,# #/d 6(/6* )*6* 3&
$*60-3 =%3 &3 =%3-36*/ ,#- #& #-)Z(
-
7/23/2019 Manual Inicio Android
80/276
(*
,3/2&(3;#$ #,* 2#-# 9*,#/ / - 3/9* /3&3))(*$#6*/ 23/9#c# Y0;1[1%: 3$
-
7/23/2019 Manual Inicio Android
81/276
)+
)*&%6$# e(H14-: 3$ )*&%6$#
L#1$;% #& /3&3))(*$#- )#60(# # )*6* /3 6%3/9-# 3$ '6#;3$ E[ W ,#6*/ %$ )&()T #& 0*94$
3$)3--#,* 3$ 3& )%#,-* -*5*7
01/234 !$
\7 8$
-
7/23/2019 Manual Inicio Android
82/276
)!
01/234 !&
S7 8$ 3/93 2%$9* #& )-3#- $%3
-
7/23/2019 Manual Inicio Android
83/276
)#
01/234 !(
5),8), ") >)$' 0' 0)&*$ '/ '" +,*:'B&* 0' ./0,*%0
E7 8$ 3/93 2%$9* 3/ $3)3/#-(* -3)*-,#- %0()#)(4$ 3$ =%3 ;%#-,#6*/ $%3/9-# 0#/3 ,3 ,#9*/:
2*-=%3 $3)3/(9#6*/ )*2(#- ,()Z* #-)Z(
-
7/23/2019 Manual Inicio Android
84/276
)$
5),8), ") >)$' 0' 0)&*$ '/ ") )+"%B)B%E/ +),) +*0', ?$),")
E7 H* 2-(63-* /3-1 )-3#- %$ 2#=%393 $%3
-
7/23/2019 Manual Inicio Android
85/276
)%
01/234 #+
b7 +Z*-# )-3#-36*/ %$# 6h9*,* =%3 =3 3$ )#/* ,3 $* 3`(/9(-: ,()Z* 6h9*,* /3 -1 @X3@A:/./\/=3YZ: 3&
)4,(;* $3)3/#-(* 3$ 3/9# )/3 /3 6%3/9-# 3$ '6#;3$ CE7
01/234 #!
\7 8& /(;%(3$93 6h9*,* $3)3/#-(* 3/ %$* =%3 $*/ #W%,3 # )*2(#- 0#/3 ,3 ,#9*/ =%3 93$36*/ 3$
)#-239# /==3.= #& /(/936# ,3 #-)Z(
-
7/23/2019 Manual Inicio Android
86/276
)&
01/234 ##
]7 H*/ ,*/ 6h9*,*/ #$93-(*-3/ /*$ $3)3/#-(*/ 2%3/9* =%3 /*$ %9(&(>#,*/ 2*- 3& 6h9*,*
@73/.3:/./\/=3YZ W# =%3 2-(63-*
-
7/23/2019 Manual Inicio Android
87/276
)'
S7 .*- m&9(6* U#&9# #;-3;#- ,*/ 6h9*,*/ 6%W (62*-9#$93/ 2#-# #0-(- W )3--#- 0#/3 ,3 ,#9*/:
3/9*/ 6h9*,*/ /*$ -?34:/./\/=3YZ W @>-=3YZC 3$ '6#;3$ CF 2*,36*/ *0/3-
-
7/23/2019 Manual Inicio Android
88/276
)(
12. O =%3,#$,* 3& W*%9 activity_splash_screen.xml )*6* /3 6%3/9-# #
)*$9($%#)(4$g
-
7/23/2019 Manual Inicio Android
89/276
))
E[78& )4,(;* ,3 )/3 SplashScreen.java 3/ 6%W /(62&3: 3$ 3& 6h9*,* onCreate()/3
)#-;# 3& W*%9 =%3 /3 #- W /3 6#$,# - # /%0)/3 ($93-$# 2-(
-
7/23/2019 Manual Inicio Android
90/276
)*
Void> {
/** No realizamos nada en el mtodo onPreExecute* */
@Override
protectedvoidonPreExecute() {super.onPreExecute();
}
/** En el mtodo doInBackground es el momento* donde verificaremos la existencia de la base de datos* */
@OverrideprotectedVoid doInBackground(Void... params) {
DataBaseManager myDbHelper = new
DataBaseManager(SplashScreen.this);try{myDbHelper.createDataBase();
} catch(IOException e) {thrownewError("Imposible crear la base de
datos");}returnnull;
}
/** Al momento de terminar la ejecucin del mtodo* doInBackground ser momento de ejecutar al mtodo* onPostExecute*/
@OverrideprotectedvoidonPostExecute(Void result) {
super.onPostExecute(result);// Despus de ejecutar la verificacin de la base de
datos// cerrarremos esta actividad y lanzaremos la nnueva
actividadIntent i = newIntent(SplashScreen.this,
MainActivity.class);startActivity(i);// cerrar definitivamente esta actividad
// para evitar que en el momento de dar Back seejecute de nuevo
}}
}
E\7K#03 -3)*-,#- * Z#)3- $*9#- #&;%$#/ )*/#/g
-
7/23/2019 Manual Inicio Android
91/276
*+
#7 8/9# 3/ /4&* %$# U*-6# ,3 2*,3- #,# 3$ )%#&=%(3- 2#-93 ,3 $%3/9-* /(/936#: $* /*&* 3$ 3& /2/Z * 2#-#
-
7/23/2019 Manual Inicio Android
92/276
-
7/23/2019 Manual Inicio Android
93/276
*#
publicclassDBAdapter {
//Campos de la BDpublicstaticfinalString KEY_ROWID= "_id";publicstaticfinalString KEY_CATEGORY= "categoria";publicstaticfinalString KEY_SUMMARY= "resumen";
publicstaticfinalString KEY_DESCRIPTION= "descripcion";privatestaticfinalString DATABASE_TABLE= "todo";privateContext context;privateSQLiteDatabase database;privateDataBaseHelper dbHelper;
publicDBAdapter(Context context) {this.context= context;
}
publicDBAdapter open() throwsSQLException{dbHelper= newDataBaseHelper(context);
database= dbHelper.getWritableDatabase();returnthis;}
publicvoidclose(){dbHelper.close();
}
/**** Crea una nueva tarea, si esto va bien retorna* la rowId de la tarea, de lo contrario retorna -1** */
publiclongcrearNuevaTarea(String categoria, String resumen,String descripcion){
ContentValues inicialValues = crearContentValues(categoria,resumen, descripcion);
returndatabase.insert(DATABASE_TABLE, null, inicialValues);}
//Actualiza la tareapublicbooleanupdateTarea(longrowId, String categoria, String
resumen, String descripcion){
ContentValues actulizaValues = crearContentValues(categoria,resumen, descripcion);
returndatabase.update(DATABASE_TABLE,actulizaValues,KEY_ROWID+ "="+rowId, null) > 0;
}
-
7/23/2019 Manual Inicio Android
94/276
*$
//Borrar la tareapublicbooleandeleteTarea(longrowId){
returndatabase.delete(DATABASE_TABLE, KEY_ROWID+ "="+rowId, null) > 0;
}
// Retorna un cursor que contiene todos los itemspublicCursor recuperaTodos(){
String[] columnas = {KEY_ROWID, KEY_CATEGORY, KEY_SUMMARY,KEY_DESCRIPTION};
returndatabase.query(DATABASE_TABLE, columnas, null, null,null, null, null);
}
// Retorna un Cursor que contiene la info de una tareapublicCursor recuperaTarea(longrowId) throwsSQLException{
String[] columnas = {KEY_ROWID, KEY_CATEGORY, KEY_SUMMARY,KEY_DESCRIPTION};
Cursor mCursor = database.query(true, DATABASE_TABLE,columnas, KEY_ROWID+ "="+rowId, null, null, null, null, null);
if(mCursor != null){mCursor.moveToFirst();
}returnmCursor;
}
privateContentValues crearContentValues(String categoria, Stringresumen,
String descripcion) {ContentValues values = newContentValues();values.put(KEY_CATEGORY, categoria);values.put(KEY_DESCRIPTION, descripcion);values.put(KEY_SUMMARY, resumen);returnvalues;
}
}
P#6*/ # 3`2&()#- )#,# %$* ,3 &*/ 6h9*,*/ =%3 3/9#6*/ )-3#$,*7 H# 2-(63-# 2#-93 )*--3/2*$,3 #
)-3#)(4$ ,3 / )*$/9#$93/ W
-
7/23/2019 Manual Inicio Android
95/276
*%
/3 #0-3 0#/3 ,3 ,#9*/ # 9-#
-
7/23/2019 Manual Inicio Android
96/276
*&
H#/ )*$/%&9#/ /3 2%3,3$ )-3#- # 9-# 2#-# 3/23)(U()#- &*/ ,#9*/
,($16()*/ * %$ *0539* ,3 9(2* fGM#"1G=14NX=#$;147 IjH(93N%(&,3- 3/ /(6(- # ($93-U#> ,3 %$ 2-*#-/3 )*$ Content Providers& l#W =%3 /#03- 9#60(h$ =%3 9*,#
)*$/%&9# =%3 -3#&()36*/ $*/ -39*-$#-1 %$ *0539* ,3 9(2* .=4%/47
.#-# ,3U($(- -: W )*$3)9#- )*$ %$# 0#/3 ,3 ,#9*/ IjH(93 /3-1 # 9-##- &*/ 6h9*,*/ 84=37.YZ: H?6/.3YZ
W 63>3.3YZ 2-*2*-)(*$#,*/ 9#60(h$ )*$ )/3 9_Q8.3:/./F/=37 8/9*/ 6h9*,*/ 23-6(93$ -3#&(>#- /
9#-3#/ ,3 ($/3-)(4$: #)9%#&(>#)(4$ W 3&(6($#)(4$ ,3 -3;(/9-*/ ,3 %$# U*-6# #&;* 61/ 2#-#6h9-()# =%3
3^3@9_QYZ: /32#-#$,* 9#0/:
-
7/23/2019 Manual Inicio Android
97/276
*'
H*/ 6h9*,*/ H?6/.3YZW 63>3.3YZ /3 %9(&(>#-1$ ,3 U*-6# 6%W 2#-3)(,# # h/9#: )*$ /#- 3& 36#(& ,3& %/%#-(* ,3 $*60-3 ~%/%E Z#-d#6*/ &* /(;%(3$93g
01/234 #'
K*6* 2*,36*/ 3.3YZ /3 %9(&(>#-d# ,3 U*-6# #$1&*;#7 .*- 35362&* 2#-# 3&(6($#- 3& -3;(/9-* ,3& %/%#-(* ~%/%C Z#-d#6*/
&* /(;%(3$93g
01/234 #(
K*6* 3.3YZ 2*,36*/ %9(&(>#- #-;%63$9*/ ,3$9-* ,3 / )*$,()(*$3/ ,3 /3$93$)(# IjH7 8/9* $* 3/ 61/ =%3
2#-93/
-
7/23/2019 Manual Inicio Android
98/276
*(
?3 U*-6# #$1&*;# # &* =%3 #$,* %$
6h9*,* 3/23)dU()* ,*$,38(4(
-
7/23/2019 Manual Inicio Android
99/276
*)
1-I3E-,3^.YZg 6%3
-
7/23/2019 Manual Inicio Android
100/276
**
H* 2-(63-* =%3 ,3036*/ ,3 Z#)3- 3/ #/3;%-#-$*/ ,3 =%3 93$36*/
-
7/23/2019 Manual Inicio Android
101/276
!++
H# 2*/()(4$ ,3 ,3/&(>#6(3$9* ,3$9-* ,3& W*%9 3/ )*$9-*,* 2*- /(;7
2-*2(3,#, android:layout_gravity 3/93 2%3,3 /3-g left , right o start y end7
.#-# ,#-$*/ %$# (,3# #& U($#&(>#- 3& 9%9*-(#& /3-36*/ )#2#)3/
,3 (62&363$9#- %$#
e0 ,3 3/93 9(2*7
K*6*
-
7/23/2019 Manual Inicio Android
102/276
!+!
protectedvoidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);
//Drawer LayoutmDrawerLayout= (DrawerLayout)
findViewById(R.id.drawer_layout);//ListamDrawerList= (ListView) findViewById(R.id.drawerIzquierdo);
}
@OverridepublicbooleanonCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if itis present.
getMenuInflater().inflate(R.menu.main, menu);
returntrue;}
}
8/ 6%W /(62&3: )*$ /*?$93 ,3)-#- 3& W*%9 W# U%$)(*$#-(#: 3$ 3/93 )#/* ,3)-#6*/ 3&
DrawerLayoutW ListView7
I( )*--36*/ #22 3$ 3/93 2%$9* W ,3/&(>#6*/ 3& ,3,* ,3 U*-6# Z*-(>*$9#& ,3/,3 3& 3`9-36* (>=%(3-,*
,3 2#$9#& Z#)(# ,3$9-* # 3& 63$m: 3$ 3/93 2%$9* 9*,#
-
7/23/2019 Manual Inicio Android
103/276
!+#
+ )*$9($%#)(4$
-
7/23/2019 Manual Inicio Android
104/276
!+$
.#-# $%3/9-* 35362&* &* =%3 93$,-36*/ 3/ &* /(;%(3$93g
3$)#03>#,* ,-#a3-7`6&
(936s,-#a3-7`6&
-
7/23/2019 Manual Inicio Android
105/276
!+%
K*6* /3 2%3,3
-
7/23/2019 Manual Inicio Android
106/276
!+&
android:text="@string/app_name"/>
.#-# 2*,3 #;-3;#- *2)(*$3/ #& 63$m /3 #;-3;#$ 9#$9* / *2)(*$3/ )*6* (6#;3$ =%3 )#,# 0*94$
,303 93$3- ,3$9-* ,3& R-3/RD
ToDoSQLiteHello world!TareasActivity
ToDo
ConversorPerfilConfiguracinConversor
@drawable/ic_action_go_to_today@drawable/ic_action_merge@drawable/ic_action_person@drawable/ic_action_good
@drawable/ic_action_cloud
8$ 2-(63-# /3))(4$ Z3 ,3)-#,* %$ #--#W ,3 I9-($;/ nav_options &%3;* *9-* ,3 drawables
nav_iconos: 3/9# 3/ %$# U*-6# U1)(& W -12(,# ,3 2*,3- ,3)-#- 3/9*/ #%$=%3 9#60(h$ 2%,* Z#03-/3
,3)-#,* 63,(#$93 5#
-
7/23/2019 Manual Inicio Android
107/276
!+'
publicString getTitulo() {returntitulo;
}
publicvoidsetTitulo(String titulo) {
this.titulo= titulo;}
publicintgetIcono() {returnicono;
}
publicvoidsetIcono(inticono) {this.icono= icono;
}}
P*&
-
7/23/2019 Manual Inicio Android
108/276
-
7/23/2019 Manual Inicio Android
109/276
!+)
&(/9#,* /(;%(3$93 2*,36*/
-
7/23/2019 Manual Inicio Android
110/276
!+*
@OverridepublicView getView(intposition, View convertView, ViewGroup
arg2) {
Fila view;LayoutInflater inflator = mActivity.getLayoutInflater();
if(convertView == null){view = newFila();//Crear objeto item y obtenerlo del arrayItems item = arrayItems.get(position);convertView = inflator.inflate(R.layout.item_drawer,
null);//Tituloview.tituloItem= (TextView)
convertView.findViewById(R.id.title_item);//Establecer en el campo titulo el nombre
correspondiente obtenido del objeto itemview.tituloItem.setText(item.getTitulo());
//Iconoview.icono= (ImageView)convertView.findViewById(R.id.icon);
//Seteo del iconoview.icono.setImageResource(item.getIcono());convertView.setTag(view);
}else{view = (Fila) convertView.getTag();
}returnconvertView;
}
}
H* =%3 /(62&363$93 Z#)3 3/ 9*6#- ,3& *0539* 3`9-#d,* ,3& Arraylist 3& 93`9* W (6#;3$ 2#-#&%3;* #/(;$1-/3 # /% )*--3/2*$,(3$93 3&363$9*78$ 3/93 2%$9* $%3/9-# #2&()#)(4$ 23-6(93 %9(&(>#- $##0&3 ,3 6*63$9* /*&* U%$)(*$#-#)*$
-
7/23/2019 Manual Inicio Android
111/276
-
7/23/2019 Manual Inicio Android
112/276
-
7/23/2019 Manual Inicio Android
113/276
-
7/23/2019 Manual Inicio Android
114/276
!!$
}
O# )%#$,* /3 9(3$3 &(/9* 3& fragment3& )4,(;* =%3 $3)3/(9#6*/ =%3 9-#(;# $%3/9-# )/3 2-($)(2#& /3-1
3& /(;%(3$93g
//Establecemos la accion al clickear sobre cualquier item del menu.//De la misma forma que hariamos en una app comun con un
listview.mDrawerList.setOnItemClickListener(new
AdapterView.OnItemClickListener() {@OverridepublicvoidonItemClick(AdapterView arg0, View arg1,
intposition, longid) {MostrarFragment(position);
}});
//Cuando la aplicacion cargue por defecto mostrar la opcin HomeMostrarFragment(1);
?3$9-* ,3 OnCreate() #& mDrawerList &3 #/(;$#6*/ 3& 6h9*,* OnItemClickListener W
,3$9-* Z#)36*/ %$# ,# #& 6h9*,* MostrarFragment(position) #& )%#& Z#W =%3 2#/#-&3
)*6* 2#-1639-* 2*/()(4$ ,3 *2)(4$ /3&3))(*$#,# 3$ 3& 63$m: 3$ 0#/3 # 3/9* 6*/9-#-# 3&
fragment3/23)(U()*7
H%3;* U%3-# ,3 3/9* ($,()* =%3 )%#$,* #2&()#)(4$ )#-;%3 6%3/9-3 *2)(4$ p@*?*q 2*- ,3U3)9*: 2#-#
3/* &3 2#/* 3& $%63-* E 3& )%#& 3=%(
-
7/23/2019 Manual Inicio Android
115/276
!!%
default://si no esta la opcion mostrara un toast y nos mandara a
HomeToast.makeText(getApplicationContext(),"Opcion
"+titulos[position-1]+"no disponible!", Toast.LENGTH_SHORT).show();
fragment = newTareasFragment();position=1;break;
}//Validamos si el fragment no es nuloif(fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_frame,fragment).commit();
// Actualizamos el contenido segun la opcion elegida
mDrawerList.setItemChecked(position, true);mDrawerList.setSelection(position);//Cambiamos el titulo en donde decia "setTitle(titulos[position-1]);//Cerramos el menu deslizablemDrawerLayout.closeDrawer(mDrawerList);
} else//Si el fragment es nulo mostramos un mensaje de
error.Log.e("Error ", "MostrarFragment"+position);
}
K*$ 3/9* 01/()#63$93 W# 2*,36*/ ,*9#- # $%3/9-# #2&()#)(4$ ,3 &4;()# $3)3/#-(# 2#-# 2*,3- 6*/9-#-
)#,# *2)(4$ ,3& 63$m: &%3;* ,323$,3 ,3 )#,# %$* &* =%3 ,3/33 6*/9-#- 3$ /%/ #2&()#)(*$3/7
.*- m&9(6* Z#W =%3 #;-3;#- &*/ /(;%(3$93/ 6h9*,*/g onPostCreate,
onConfigurationChanged, onOptionsItemSelected2#-# /*0-3/)-(0(-&*/7
@OverrideprotectedvoidonPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);// Sync el estado del toggle despues de onRestoreInstanceState
haya ocurrido.mDrawerToggle.syncState();
}@OverridepublicvoidonConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);mDrawerToggle.onConfigurationChanged(newConfig);
}@OverridepublicbooleanonOptionsItemSelected(MenuItem item) {
// Pasar el evento al ActionBarDrawerToggle, si este
-
7/23/2019 Manual Inicio Android
116/276
!!&
// regresa true, entonces este manejara el evento del touch// en el icono de la app
if(mDrawerToggle.onOptionsItemSelected(item)) {Log.e("mDrawerToggle presionado", "x");
returntrue;}
// Maneja los otros items de la action bar...returnsuper.onOptionsItemSelected(item);
}
8$ 3/93 2%$9* $%3/9-# )/3 MainActivity.java /3
-
7/23/2019 Manual Inicio Android
117/276
-
7/23/2019 Manual Inicio Android
118/276
!!(
Log.e("Cerrado completo", "!!");}
publicvoidonDrawerOpened(View drawerView) {Log.e("Apertura completa", "!!");
}
};
//Establecemos que mDrawerToggle declarado anteriormente seael DrawerListener
mDrawerLayout.setDrawerListener(mDrawerToggle);
//Establecemos que el ActionBar muestre el botn homegetActionBar().setDisplayHomeAsUpEnabled(true);
//Establecemos la accion al clickear sobre cualquier item delmenu.
//De la misma forma que hariamos en una app comun con un
listview.mDrawerList.setOnItemClickListener(newAdapterView.OnItemClickListener() {
@OverridepublicvoidonItemClick(AdapterView arg0, View arg1,
intposition, longid) {MostrarFragment(position);
}});
//Cuando la aplicacion cargue por defecto mostrar la opcionHome
MostrarFragment(1);}
/*Pasando la posicion de la opcion en el menu nos mostrara elFragment correspondiente*/
privatevoidMostrarFragment(intposition) {// update the main content by replacing fragmentsFragment fragment = null;switch(position) {case1:
fragment = newTareasFragment();break;
/*case 2:
fragment = new ProfileFragment();break;*/
default://si no esta la opcion mostrara un toast y nos mandara a
HomeToast.makeText(getApplicationContext(),"Opcion
-
7/23/2019 Manual Inicio Android
119/276
!!)
"+titulos[position-1]+"no disponible!", Toast.LENGTH_SHORT).show();fragment = newTareasFragment();position=1;break;
}//Validamos si el fragment no es nulo
if(fragment != null) {FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_frame,fragment).commit();
// Actualizamos el contenido segun la opcion elegidamDrawerList.setItemChecked(position, true);mDrawerList.setSelection(position);//Cambiamos el titulo en donde decia "setTitle(titulos[position-1]);//Cerramos el menu deslizable
mDrawerLayout.closeDrawer(mDrawerList);} else//Si el fragment es nulo mostramos un mensaje de
error.Log.e("Error ", "MostrarFragment"+position);
}
@OverrideprotectedvoidonPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);// Sync el estado del toggle despues de onRestoreInstanceState
haya ocurrido.mDrawerToggle.syncState();
}@OverridepublicvoidonConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);mDrawerToggle.onConfigurationChanged(newConfig);
}@OverridepublicbooleanonOptionsItemSelected(MenuItem item) {
// Pasar el evento al ActionBarDrawerToggle, si este// regresa true, entonces este manejara el evento del touch// en el icono de la app
if(mDrawerToggle.onOptionsItemSelected(item)) {
Log.e("mDrawerToggle presionado", "x");returntrue;
}// Maneja los otros items de la action bar...returnsuper.onOptionsItemSelected(item);
}
@Override
-
7/23/2019 Manual Inicio Android
120/276
-
7/23/2019 Manual Inicio Android
121/276
!#+
android:orderInCategory="100"android:showAsAction="never"android:title="@string/action_insertar"/>
8& #-)Z(@drawable/ic_action_go_to_today@drawable/ic_action_merge@drawable/ic_action_person@drawable/ic_action_good@drawable/ic_action_cloud
Agregar TareaBorrar TareaNombreBorrarNombreDescripcinAceptarAn no existen elementos en la
lista
-
7/23/2019 Manual Inicio Android
122/276
-
7/23/2019 Manual Inicio Android
123/276
!##
android:layout_marginTop="6dp"android:layout_width="wrap_content"android:textColor="@color/negro"/>
+Z*-# =%3 W# Z36*/ ,3U($(,* &*/ -3)%-/*/: W*%9/ W / )/3/ =%3 $*/ #W%,#-1$ # 6#$(2%- 2#-93 ,3IjH(93 3$ +$,-*(,7 8/9#6*/ &(/9*/ 2#-# )-3#- / )/3/ =%3 $*/ #W%,#-1$ # 5%$9#- )#,# %$# ,3 3/9#/
2(3>#/7
.8 ,' 8) , B") $'$ +), ) ()/ 'G* 0' %/ &' ,)B B%E / B*/ ") >) $' 0' 0) &* $
8$ 3/93 2#-93
-
7/23/2019 Manual Inicio Android
124/276
!#$
android:layout_height="fill_parent"android:background="@color/list_color"android:orientation="vertical">
O# 93$36*/ ,(/3c#,# 2#-93 ,3& )46* /3
-
7/23/2019 Manual Inicio Android
125/276
-
7/23/2019 Manual Inicio Android
126/276
!#&
bundle.getSerializable(DBAdapter.KEY_ROWID);if(extras != null) {
mRowId= extras.getLong(DBAdapter.KEY_ROWID);}
// Mandamos llamar al mtodo que se encargar de llenar los
campos en caso de ser una edicinpopulateFields();
/** Le asignamos el evento de OnClickListener a nuetro botn* esto con la finalidad de que guarde los valores que
tenemos* en nuestro formulario* */
confirmButton.setOnClickListener(newView.OnClickListener(){
publicvoidonClick(View view) {
setResult(RESULT_OK);saveState();finish();
}
});}
/** Mtodo que permite llenar los campos del formulario* en el caso de que sea una edicin, si no es una* edicin los campos ser dejados vacos* */
privatevoidpopulateFields() {/** Confirmamos que a variable mRowId no est nula,* esto confirma que se trata de una edicin* */
if(mRowId!= null) {/*Recuperamos los datos de la tarea que coincide con
la variable mRowId*/Cursor todo = mDbHelper.recuperaTarea(mRowId);/** El mtodo startManagingCursor que se hereda de la
clase Activity
* nos sirve o nos ayuda para tener un mejor controldel cursor, pues
* este se adaptar al ciclo de vida de la activity,esto es que si
* la activity es detenida el cursor automticamentellamar al mtodo
* deactivate(), y cuando la activity se reinicie sellamr al mtodo
-
7/23/2019 Manual Inicio Android
127/276
!#'
* requery() para reiniciar el cursor. Tambin nosayudar al momento
* en que la activity sea destruida el Cursor sercerrado automticamente
*/startManagingCursor(todo);
String category =todo.getString(todo.getColumnIndexOrThrow(DBAdapter.KEY_CATEGORY));
for(inti = 0; i < mCategory.getCount(); i++) {
String s = (String)mCategory.getItemAtPosition(i);
Log.e(null, s + " "+ category);if(s.equalsIgnoreCase(category)) {
/** Dependiendo de la categoria que haya sido
registrada en la
* BD, ser entonces que en el Spinner seaseleccionada la misma* opcin que se tenga en la BD* */mCategory.setSelection(i);
}}
// Rellenamos los otros valores con lo que tengamos enla BD
mTitleText.setText(todo.getString(todo
.getColumnIndexOrThrow(DBAdapter.KEY_SUMMARY)));mBodyText.setText(todo.getString(todo
.getColumnIndexOrThrow(DBAdapter.KEY_DESCRIPTION)));}
}
/** En este mtodo lo que se busca es que el id de la tarea sea* guardado con la intencin de recuperarlo para cuando la
activity* sea recreado* */
@OverrideprotectedvoidonSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);//saveState();outState.putSerializable(DBAdapter.KEY_ROWID, mRowId);
}
@Override
-
7/23/2019 Manual Inicio Android
128/276
-
7/23/2019 Manual Inicio Android
129/276
!#)
}} else{
mDbHelper.updateTarea(mRowId, category, summary,description);
}}
}
8/ 6*63$9* ,3 -3#&(>#- *9-#/ 6*,(U()#)(*$3/: 3/ 9%-$* ,3 TareasFragment.java: 3& 2-(63-* W =%3
3/ 6%W (62*-9#$93 3/ )#60(#- )/3 ,3 )%#& Z3-3,#: 3$ 3/93 6*63$9* ,303-d# ,3 3/9#-
3`93$,(3$,* ,3 _-#;63$9: 23-* #Z*-#
-
7/23/2019 Manual Inicio Android
130/276
!#*
container,Bundle savedInstanceState) {
// TODOAuto-generated method stubView rootView = inflater.inflate(R.layout.activity_tareas,
container, false);
/*** Se crea una instancia de la clase DBAdapter,* el constructor de la clase mandar a crear la BD si no
existe,* en caso de ya existir solo crear la conexin a la BD* */
dbHelper= newDBAdapter(getActivity().getApplicationContext());
// Abre la conexin a la BDdbHelper.open();returnrootView;
}
/** Este mtodo nos ayuda a saber cuando la* activity de nuestro fragment ha terminado de* ejecutar su mtodo onCreate()*/
@OverridepublicvoidonActivityCreated(Bundle savedInstanceState) {
// TODOAuto-generated method stubsuper.onActivityCreated(savedInstanceState);fillData();registerForContextMenu(getListView());
}
/** Se llama cada vez que se selecciona un elemento en un men
contextual* */
@OverridepublicbooleanonContextItemSelected(MenuItem item) {
switch(item.getItemId()) {caseDELETE_ID:
AdapterContextMenuInfo info = (AdapterContextMenuInfo)item
.getMenuInfo();dbHelper.deleteTarea(info.id);fillData();returntrue;
}returnsuper.onContextItemSelected(item);
}
-
7/23/2019 Manual Inicio Android
131/276
!$+
//ListView y la accin al seleccionar un item/** Este mtodo se encarga de manejar los eventos de los* "clicks" en cada uno de los items de la lista* */
@Override
publicvoidonListItemClick(ListView l, View v, intposition,longid) {
super.onListItemClick(l, v, position, id);/** Al ser seleccionado uno de los elementos de la lista* se procede a armar un Intent que abrir la activity* DetailsActivity.java para que se editen los valores.* Se manda un parmetro que es el id de la tarea a* editar*/
Intent i = newIntent(getActivity().getApplicationContext(),DetailsActivity.class);
i.putExtra(DBAdapter.KEY_ROWID, id);
//La actividad retorna un resultado cuando se llama//startActivityForResultstartActivityForResult(i, ACTIVITY_EDIT);
}
/** Crea los elementos del men contextual* */
@OverridepublicvoidonCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {super.onCreateContextMenu(menu, v, menuInfo);menu.add(0, DELETE_ID, 0, R.string.menu_delete);
}
@OverridepublicvoidonDestroy() {
super.onDestroy();if(dbHelper!= null) {
dbHelper.close();}
}
/** En este mtodo se va a hacer una consulta a la BD en la
* cual se van a recuperar todas las tareas que existan en* la BD, y estas luego sern agregadas al ListFragment.* */
privatevoidfillData() {cursor= dbHelper.recuperaTodos();
getActivity().startManagingCursor(cursor);
-
7/23/2019 Manual Inicio Android
132/276
-
7/23/2019 Manual Inicio Android
133/276
-
7/23/2019 Manual Inicio Android
134/276
!$$
)*$ #W%,# ,3& V.I * ,3 -3, e'_': 2*- &* =%3 ,303-36*/ ,3 #;-3;#- &*/ /(;%(3$93/ 23-6(/*/ 3$
/3))(4$ ,3 23-6(/*/ ,3& "#$(U3/9g
2*- &* =%3 9*,* $%3/9-* "#$(U3/9 =%3,#-1 )*6* /3 6%3/9-# # )*$9($%#)(4$g
-
7/23/2019 Manual Inicio Android
135/276
-
7/23/2019 Manual Inicio Android
136/276
-
7/23/2019 Manual Inicio Android
137/276
!$'
V+,$15J"8"
?3 3/9# )/3 &* =%3 $*/ ($93-3/# W /3-1 &* m$()* =%3 3`2&(=%3 /3-1$ &*/ 6h9*,*/
AdjustWidthScreen() W AdjustHeightScreen(), 3& 2-(63-* ,3 3&&*/ &* =%3 Z#)3 3/
-3)(0(- ,3 2#-1639-*/ 3& #&9*: #$)Z* ,3 %$ 3&363$9*
-
7/23/2019 Manual Inicio Android
138/276
-
7/23/2019 Manual Inicio Android
139/276
!$)
percent, Object theObject){if(theObject instanceofTextView) {
((TextView) theObject).setHeight((percent * height) /100);
}elseif(theObject instanceofLinearLayout){
((LinearLayout) theObject).setMinimumHeight((percent *height) / 100);
}elseif(theObject instanceofButton){
((Button) theObject).setHeight((percent * height) /100);
}elseif(theObject instanceofImageView){
((ImageView) theObject).getLayoutParams().height=(percent * height) / 100;
}return;
}}
L)**'(+,)*7'+'(+'35J"8"
8/9# )/3 3/ 6%W /(62&3: ,3 &* m$()* =%3 /3 3$)#-;# 3/ ,3 ,393)9#- /( Z#W )*$3`(4$ # ($93-$39: -3;-3/#
%$
-
7/23/2019 Manual Inicio Android
140/276
!$*
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();booleanisConnected = activeNetwork != null&&
activeNetwork.isConnectedOrConnecting();returnisConnected;
}}
[N"917,3'(+,)*5J"8"
8/9# )/3 3/ %$ 2*)* 61/ )*62&()#,#: 2%3/ -3#&(># 61/ )*/#/: 3$ 3/93 )#/* ,3036*/ ,3 63$)(*$#- W
93$3- 6%)Z* )%(,#,* 2%3/ 3/9# )/3 3/91 3$U*)#,# 3$ %$ 6#2# =%3 3/91 /(3$,* -3$,3-(>#,* /*0-3 %$
_-#;63$9: 3$ 3& )#/* ,3 =%3 /3# *9-* 9(2* ,3 P(3a 3$ 3& )%#& /3 3/9h 6*/9-#$,* /3 ,303-#$ ,3 9*6#- /
63,(,#/ 23-9($3$93/ 2#-# #/3;%-#-/3 =%3 3/93 U%$)(*$3 #,3)%#,#63$937
8623>#-36*/ ,()(3$,* =%3 3$ 3& )*$/9-%)9*- -3)(03 )*6* 2#-1639-* 3& U-#;63$9 /*0-3 3& )%#& /3 3/91
353)%9#$,* * 6*/9-#$,* 3& 6#2# W /*0-3 3& )%#& /3 #- )*$/%&9# # V**;&3: W
)*6* -3/%&9#,* ,3 /% 353)%)(4$ ,#-1 %$ *0539* ,3& 9(2* ?*)%63$9 3& )%#& )*$93$,-1 3/9-%)9%-# ,3&
,*)%63$9* f"H =%3 -3/2*$,3 V**;&3 W =%3 )*$9(3$3 ($U*-6#)(4$ ,3 )46* &&3;#-7 O# 2*- m&9(6*
93$36*/ #& 6h9*,* doPostExecute: 3/93 6h9*,* -3)(03 3& *0539* ?*)%63$9 )*$ ($U*-6#)(4$ ,3&
f"H ,3 -3/2%3/9# ,3 V**;&37 J9-* 6h9*,* =%3 93$36*/ 3$ 3/9# )/3 3/ 3& 6h9*,* getDirectionW
3/93 6h9*,* -3)(03 3& *0359* ?*)%63$9 )*$ 9*,# ($U*-6#)(4$ ,3& f"H ,3 V**;&3 W &* =%3 Z#)3 3/
*093$3- ($U*-6#)(4$ )*$93$(,# 3$ h& 2#-# *093$3- m$()#63$93 &*/ 2%$9*/ )*$ /%/ )**-,3$#,#/ W =%3
/3-1$ 2%3/9*/ 3$ 3& 6#2# 2#-# -32-3/3$9#- -%9#: #/d 6(/6* 93$36*/ &*/ 6h9*,*/ getNodeIndexW
decodePoly 23-* 3/9*/ 6h9*,*/ /*$ #%`(&(#-3/ ,3& getDirection7 O W# 2#-# 93-6($#- #=%d 6%3/9-* )/3 )*62&39#g
packagecom.android.utm.todosqlite.util;
importjava.io.InputStream;importjava.util.ArrayList;
-
7/23/2019 Manual Inicio Android
141/276
!%+
importjavax.xml.parsers.DocumentBuilder;importjavax.xml.parsers.DocumentBuilderFactory;
importorg.apache.http.HttpResponse;importorg.apache.http.client.HttpClient;importorg.apache.http.client.methods.HttpPost;
importorg.apache.http.impl.client.DefaultHttpClient;importorg.apache.http.protocol.BasicHttpContext;importorg.apache.http.protocol.HttpContext;importorg.w3c.dom.Document;importorg.w3c.dom.Node;importorg.w3c.dom.NodeList;
importandroid.app.ProgressDialog;importandroid.os.AsyncTask;
importcom.android.utm.todosqlite.TrazarRutaInternaFragment;importcom.google.android.gms.maps.model.LatLng;
publicclassGMapsDirection {publicfinalstaticString MODE_DRIVING= "driving";publicfinalstaticString MODE_WALKING= "walking";privateTrazarRutaInternaFragment fragment;publicProgressDialog progress;
/*** El constructor recibe como parmetro* el fragment sobre el cual se est ejecutando* o mostrando el mapa y sobre el cual se va a* pintar la ruta de nuestro punto de origen a* nuestro punto de destino* */
publicGMapsDirection(TrazarRutaInternaFragment fragment) {this.fragment= fragment;
}
publicvoidgetDocument(LatLng start, LatLng end, String mode) {/*** Armamos la url de peticin a Google* donde le pedimos que nos de las indicaciones* de cmo llegar desde nuestro punto de origen* hasta nuestro punto de destino, para lo cual* necesitamos las coordenadas de inicio y de
* destino* */
String url ="http://maps.googleapis.com/maps/api/directions/xml?"
+ "origin="+ start.latitude+ ","+start.longitude
+ "&destination="+ end.latitude+ ","+end.longitude
-
7/23/2019 Manual Inicio Android
142/276
!%!
+"&sensor=false&units=metric&mode="+MODE_DRIVING;
// Usamos nuestra clase ConnectionDetector para verificar laconectividad a internet
ConnectionDetector connectionDetector = new
ConnectionDetector(fragment.getActivity());if(connectionDetector.isConnectedToInternet()){
newRetrieveData().execute(url);}
}
/*** Clase interna que hereda de AsyncTask la cual recibe* la url de peticin para Google y entrega un objeto del* tipo Document el cual contiene los pasos y coordenadas* de los puntos para llegar al destino especificado* */
classRetrieveData extendsAsyncTask {
/*** En este mtodo lo nico que haremos ser iniciar* un PogressDialog, este estar visible mientras* se ejecuta el proceso de preguntar a Google y de* que de su respuesta y as mismo de trazar la ruta* sobre el mapa* */
@OverrideprotectedvoidonPreExecute() {
progress= newProgressDialog(fragment.getActivity());progress.setTitle("Cargando");progress.setMessage("Por favor, espera...");progress.setCanceledOnTouchOutside(false);progress.show();
}
/*** Este mtodo recibe como parmetro la url para realizar* la consulta a Google, y como resultado de su ejecucin* dar un objeto del tipo Document el cual contendr la* estructura del documento XML que responde Google y que* contiene la informacin de cmo llegar* */
protectedDocument doInBackground(String... urls) {try{
// Interfaz para un cliente HTTP.HttpClient httpClient = newDefaultHttpClient();
-
7/23/2019 Manual Inicio Android
143/276
-
7/23/2019 Manual Inicio Android
144/276
-
7/23/2019 Manual Inicio Android
145/276
!%%
latNode = nl3.item(getNodeIndex(nl3, "lat"));lat =
Double.parseDouble(latNode.getTextContent());lngNode = nl3.item(getNodeIndex(nl3, "lng"));lng =
Double.parseDouble(lngNode.getTextContent());
listGeopoints.add(newLatLng(lat, lng));}
}
returnlistGeopoints;}
privateintgetNodeIndex(NodeList nl, String nodename) {for(inti = 0; i < nl.getLength(); i++) {
if(nl.item(i).getNodeName().equals(nodename))returni;
}
return-1;}
privateArrayList decodePoly(String encoded) {ArrayList poly = newArrayList();intindex = 0, len = encoded.length();intlat = 0, lng = 0;while(index < len) {
intb, shift = 0, result = 0;do{
b = encoded.charAt(index++) - 63;result |= (b & 0x1f) = 0x20);intdlat = ((result & 1) != 0 ? ~(result >> 1) :
(result >> 1));lat += dlat;shift = 0;result = 0;do{
b = encoded.charAt(index++) - 63;result |= (b & 0x1f) = 0x20);intdlng = ((result & 1) != 0 ? ~(result >> 1) :
(result >> 1));lng += dlng;
LatLng position = newLatLng((double) lat / 1E5,(double) lng / 1E5);
poly.add(position);}returnpoly;
-
7/23/2019 Manual Inicio Android
146/276
!%&
}}
+Z*-# 3/ 6*63$9* W# ,3 3623>#- # 9-#0#5#- 2#-93 =%3 /3-1 #-36*/ )*$ 3& ,(/3c* ,3 &*/ W*%9/ ,3 / ($93-U#)3/ ,3 )#,# %$* ,3 &*/ U-#;63$9/ =%3
#2#-3)3-1$ 3$ $%3/9-#/ 23/9#c#/: # )*$9($%#)(4$ 6%3/9-* %$# )#29%-# ,3 2#$9#& ,3 )46* /3
-
7/23/2019 Manual Inicio Android
147/276
-
7/23/2019 Manual Inicio Android
148/276
!%(
8$ 3/93 )#/* W# 3/ ,3)(/(4$ 23-/*$#& =%3 *2)(4$ 9*6#-: 23-* W* #)*$/35* Z#)3-&* )*$ #2&()#)(4$ ,3
"#2/: W# =%3 $*/ ,#-1 )*6* -3/%&9#,* &* =%3
-
7/23/2019 Manual Inicio Android
149/276
!%)
8& /3;%$,* W*%9 /3-1 ,36#/(#,* /(62&3 2%3/ &*/ 3&363$9*/ =%3 %9(&(>#-36*/ /*$
-
7/23/2019 Manual Inicio Android
150/276
!%*
-
7/23/2019 Manual Inicio Android
151/276
!&+
8$ $%3/9-* 35362&* / 23/9#c#/ 93$,-1$ ,*/ )*&*-3/: %$# 2#-# )%#$,* 3/91$ /3&3))(*$#,*/ AbbS3[[B: W
*9-* 2#-# )%#$,* $* &* 3/91$ A#,#0CEB: 3/ 2*- 3/9# -#>4$ =%3 -3;(/9-#-36*/ ,*/ )*&*-3/ 3$ 3& #-)Z(#- ,3 -%9# 3$ 3& 6#2#: 2*-
&* =%3 $%3/9-* #-)Z(
I( $* =%3-36*/ =%3 / 23/9#c#/ ,3 $%3/9-# #2&()#)(4$ &%>)#$ ,3 U*-6# 2*- ,3U#%&9 )*6* 3$ 3& 3/9(&*
,3 +$,-*(, /3-1 $3)3/#-(* =%3 /3# )-3#,* %$ W*%9 $%3
-
7/23/2019 Manual Inicio Android
152/276
!&!
2-3
O# ,3U($(6*/ )*6* /3 ,303 ,3
-
7/23/2019 Manual Inicio Android
153/276
!
-
7/23/2019 Manual Inicio Android
154/276
!&$
android:layout_width="fill_parent"android:layout_height="fill_parent"/>
.#-# 93-6($#- )*$ U#/3 ,3 ,(/3c* ,3 ($93-U#> /3-1 $3)3/#-(* 93$3- %$ W*%9 3$ 3& )%#& 93$;#6*/ %$
)*$)3$9-#,*- ,3 9*,*/ &*/ ,361/ W*%9/ Z3)Z*/ 2%3/ /*$ 3/*/ W*%9/ %$# 2#-93 ,3& ,(/3c* ;3$3-#&
,()Z* W*%9 /3 -1 fragment_trazar.xml =%3 3$
-
7/23/2019 Manual Inicio Android
155/276
-
7/23/2019 Manual Inicio Android
156/276
!&&
importjava.util.ArrayList;
importorg.w3c.dom.Document;
importandroid.app.AlertDialog;importandroid.content.Context;
importandroid.location.Criteria;importandroid.location.Location;importandroid.location.LocationManager;importandroid.os.Bundle;importandroid.support.v4.app.Fragment;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.Toast;
importcom.android.utm.todosqlite.util.ConnectionDetector;importcom.android.utm.todosqlite.util.GMapsDirection;
importcom.google.android.gms.common.GooglePlayServicesNotAvailableException;importcom.google.android.gms.location.LocationListener;importcom.google.android.gms.maps.CameraUpdate;importcom.google.android.gms.maps.CameraUpdateFactory;importcom.google.android.gms.maps.GoogleMap;importcom.google.android.gms.maps.MapView;importcom.google.android.gms.maps.MapsInitializer;importcom.google.android.gms.maps.model.BitmapDescriptorFactory;importcom.google.android.gms.maps.model.LatLng;importcom.google.android.gms.maps.model.Marker;importcom.google.android.gms.maps.model.MarkerOptions;importcom.google.android.gms.maps.model.PolylineOptions;
/** En esta clase heredamos de la clase Fragment de android y vamos* a implementar la interfaz publica LocationListener* */
publicclassTrazarRutaInternaFragment extendsFragment implementsLocationListener{
privateMapView mMapView;privateGoogleMap map;privatefinaldoublelatitude= 19.4325;privatefinaldoublelongitude= -99.131111;
privateContext context;privateLocationManager locationManager;privateString provider;privateLocation location;privateGMapsDirection md;privateLatLng currentLocation;privatedoublecurrentLatitude;privatedoublecurrentLongitude;
-
7/23/2019 Manual Inicio Android
157/276
!&'
@OverridepublicView onCreateView(LayoutInflater inflater, ViewGroup
container,Bundle savedInstanceState) {
// Cargar el layout en el fragmentView rootView =
inflater.inflate(R.layout.como_llegar_interna_fragment,container, false);
/*** Hacer referencia al elemento
com.google.android.gms.maps.MapView* del layout aqu ser donde se mostrar el mapa* */
mMapView= (MapView) rootView.findViewById(R.id.mapa);
// inflar y regresar el layout
mMapView.onCreate(savedInstanceState);
// Necesario para desplegar el mapa obtenido inmediatamentemMapView.onResume();
try{/*** Inicializa la API de Google Maps Android y as* obtener las caractersticas necesarias para poder* usar en el mapa ya obtenido* */MapsInitializer. initialize(getActivity());
} catch(GooglePlayServicesNotAvailableException e) {e.printStackTrace();
}map= mMapView.getMap();map.setMyLocationEnabled(true);
CameraUpdate center = CameraUpdateFactory.newLatLng(newLatLng(latitude, longitude));
CameraUpdate zoom = CameraUpdateFactory.zoomTo(12);map.moveCamera(center);map.animateCamera(zoom);context= getActivity();
// Obtener los proveedores de localizacin que existane en
nuestro dispositivo mvillocationManager= (LocationManager)
context.getSystemService(Context.LOCATION_SERVICE);
// Una clase indicando los criterios de aplicacin para laseleccin de un proveedor de ubicacin.
Criteria criteria = newCriteria();
-
7/23/2019 Manual Inicio Android
158/276
!&(
// Aqu escogemos el mejor proveedor de acuerdo a loscriterios
provider= locationManager.getBestProvider(criteria, true);
/*** Devuelve un objeto Location indicando los datos
* de la ltima ubicacin conocida obtenida del* proveedor determinado.* */location= locationManager.getLastKnownLocation(provider);if(location!= null) {System.out.println("Provider "+ provider+ " has been
selected.");onLocationChanged(location);
} else{Toast.makeText(context, "Localizacin no disponible",
Toast.LENGTH_LONG).show();}
/*** De esta manera es la forma en la que se agrega* un marcador al mapa as como sus diferentes opciones* que tendr el marcador, este marcador nos indicar el* punto de destino*/Marker marker = map.addMarker(newMarkerOptions()
.position(newLatLng(latitude,longitude)).title("Este es el destino")
.snippet("Hasta aqu debemos de llegar")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_action_place)));
/*** Se agrega un listener al marker, de esta* manera se puede controlar si se desea que* haga alguna accin* */
map.setOnMarkerClickListener(newOnMarkerClickListener() {
@OverridepublicbooleanonMarkerClick(Marker marker) {
Toast.makeText(context,
"Marcador pulsado:\n"+marker.getTitle(),Toast.LENGTH_SHORT).show();
returnfalse;}
});
-
7/23/2019 Manual Inicio Android
159/276
!&)
/*** Se agrega un listener al snipet (la informacin* que aparece al tocar el marker), de esta* manera se puede controlar si se desea que* haga alguna accin, como por ejemplo mostrar* otra vista
* */map.setOnInfoWindowClickListener(new
OnInfoWindowClickListener() {
@OverridepublicvoidonInfoWindowClick(Marker marker) {
Toast.makeText(context,
"Snipet pulsado:\n"+marker.getTitle(),Toast.LENGTH_SHORT).show();
}});/*** Instanciamos un objeto de la clase* GMapsDirection* */
md= newGMapsDirection(this);
// Crear un nuevo objeto LatLng con la longitud y latituddestino
LatLng location = newLatLng(latitude, longitude);
/*** Ejecutamos el mtodo getDocument, dicho mtodo* empezar el proceso de armar la url de consulta* a Google Maps y de interpretacin de la respuesta* */
md.getDocument(currentLocation, location,GMapsDirection.MODE_DRIVING);
returnrootView;}
@OverridepublicvoidonCreate(Bundle savedInstanceState) {
// TODOAuto-generated method stub
super.onCreate(savedInstanceState);setRetainInstance(true);
/*** En esta parte lo que hacemos es instanciar un* objeto de la clase ConnectionDetector, para* usar uno de sus mtodos y comprobar si mi* dispositivo mvil tiene acceso a interntet, en
-
7/23/2019 Manual Inicio Android
160/276
!&*
* caso de no tenerlo muestra un AlertDialog con* un mensaje* */
ConnectionDetector connectionDetector = newConnectionDetector(getActivity());
if(!connectionDetector.isConnectedToInternet()){
AlertDialog.Builder builder = newAlertDialog.Builder(getActivity());
builder.setMessage("Se requiere conexin a Internetpara visualizar el mapa.")
.setTitle("Error");AlertDialog dialog = builder.create();dialog.show();
}}
/*** Mtodo que se encarga de trazar la ruta
* o mostrarla en el mapa* */publicvoidtraceRoute(Document doc) {
// Detectar si hay conexin a internetConnectionDetector connectionDetector = new
ConnectionDetector(getActivity());if(!connectionDetector.isConnectedToInternet()){
AlertDialog.Builder builder = newAlertDialog.Builder(getActivity());
builder.setMessage("Se requiere conexin a Internet").setTitle("Error");
AlertDialog dialog = builder.create();dialog.show();
}
/*** Aqu lo que sucede es que con el mtodo getDirection
obtenemos* un ArrayList que contiene objetos LatLng con las
coordenas de* todos los puntos que responde Google Maps* */
ArrayList directionPoint = md.getDirection(doc);/**
* Creamos un objeto PolylineOptions este objeto* es una serie de segmentos de lnea conectados* que pueden formar cualquier forma que desee y* se puede utilizar para marcar caminos y rutas* en el mapa. Adems se especifican algunas* opciones como el ancho y color de la lnea.* */
PolylineOptions rectLine = new
-
7/23/2019 Manual Inicio Android
161/276
!'+
PolylineOptions().width(8).color(getResources().getColor(R.color.route));
/** En este for agregamos los puntos con sus* coordenadas a la Polyline
* */for(inti = 0 ; i < directionPoint.size() ; i++) {
rectLine.add(directionPoint.get(i));}
// Agregar la Polyline al mapa para su visualizacinmap.addPolyline(rectLine);
}
@OverridepublicvoidonResume() {
super.onResume();
if(null!= mMapView)mMapView.onResume();}
@OverridepublicvoidonPause() {
super.onPause();if(null!= mMapView)
mMapView.onPause();}
@OverridepublicvoidonDestroy() {
super.onDestroy();if(null!= mMapView)
mMapView.onDestroy();}
@OverridepublicvoidonSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);if(null!= mMapView)
mMapView.onSaveInstanceState(outState);}
@OverridepublicvoidonLowMemory() {
super.onLowMemory();if(null!= mMapView)
mMapView.onLowMemory();}
/*
-
7/23/2019 Manual Inicio Android
162/276
!'!
* Este mtodo se estar ejecutando cada vez que el GPS detecte* que la posicin actual cambia y es aqu en donde actualizaremos* la variable currentLocation que es un objeto LatLng con
posicin actual* */@Override
publicvoidonLocationChanged(Location location) {currentLatitude= location.getLatitude();currentLongitude= location.getLongitude();currentLocation= newLatLng(currentLatitude,
currentLongitude);}
}
G%3/9-* 2-*W3)9* ,3 35362&* 9(3$3 ,*/ 23/9#c#/ W 3/9#/ ,*/ 23/9#c#/ /*$ 2#-# 6*/9-#- ,*/ U*-6#/ ,3
9-#>#- %$# -%9#: U*-6# #$93-(*- =%3 #)#0#6*/ ,3
-
7/23/2019 Manual Inicio Android
163/276
!'#
8/ 6%W /(62&3 3& )4,(;* ,3 3/9# $%3#-L%9#8`93-$#_-#;63$975#
-
7/23/2019 Manual Inicio Android
164/276
!'$
longitudOrigen= (TextView)rootView.findViewById(R.id.longitud_origen_txt);
btnTrazar= (Button) rootView.findViewById(R.id.btn_trazar);
context= getActivity();
// Manda llamar el mtodo para obtener la posicin actualcomenzarLocalizacion();
// Se agrega una accin al botn para llamar el mtodotrazarRuta()
btnTrazar.setOnClickListener(newOnClickListener() {
@OverridepublicvoidonClick(View v) {
trazarRuta();
}
});returnrootView;}
/** En este mtodo se crea la URL para* solicitar la ruta, esto se hace* mediante un Intent*/
protectedvoidtrazarRuta() {Intent intentMap = new
Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("http://maps.google.com/maps?addr="+loc.getLatitude()+", "+loc.getLongitude() +
"&daddr="+ latitudDestino.getText()+", "+ longitudDestino.getText()));
startActivity(intentMap);
}
/** Mtodo para obtener la posicin actual* mediante el GPS del dispositivo mvil* */
privatevoidcomenzarLocalizacion() {
// Obtenemos una referencia al LocationManagerlocManager= (LocationManager)
context.getSystemService(Context.LOCATION_SERVICE);
//Si el GPS no est activado
if(!locManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
-
7/23/2019 Manual Inicio Android
165/276
!'%
mostrarAvisoGpsDesahibilitado();}
// Obtenemos la ltima posicin conocidaloc=
locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
// Nos registramos para recibir actualizaciones de laposicin
locListener= newandroid.location.LocationListener() {
@OverridepublicvoidonLocationChanged(Location location) {
loc= location;latitudOrigen.setText(loc.getLatitude()+"");longitudOrigen.setText(loc.getLongitude()+"");
}
@OverridepublicvoidonProviderDisabled(String arg0) {
// TODOAuto-generated method stub
}
@OverridepublicvoidonProviderEnabled(String arg0) {
// TODOAuto-generated method stub
}
@OverridepublicvoidonStatusChanged(String arg0, intarg1,
Bundle arg2) {// TODOAuto-generated method stub
}};
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,10000, 0, locListener);
}
// Mtodo que se usa para mostrar un mensaje de que el GPS estdeshabilitado
privatevoidmostrarAvisoGpsDesahibilitado() {Toast.makeText(getActivity().getApplicationContext(), "El
GPS se encuentra deshabilitado, por favor habilitar",Toast.LENGTH_LONG).show();
}
-
7/23/2019 Manual Inicio Android
166/276
!'&
}
H#/ )/3/ #$93-(*-3/ U%3-*$ )-3#,#/ 2#-# ,#- )*$9-*& # &*/ U-#;63$9/ =%3 93$,-d#6*/ 3$ )#,# %$# ,3 /
23/9#c#/: #Z*-# 3/ $3)3/#-(* #;-3;#- / )/3/ =%3 /3 3$)#-;#-#$ ,3 )*$9-*- 3& U%$)(*$#6(3$9* ,3 /
9#0/ W ,3& P(3a.#;3-7
.#-# (62&363$9#- P(3a.#;3- /3-1 $3)3/#-(* %$ #,#29#,*-: 3& )%#& /3 3$)#-;#-# ,3 #,6($(/9-#- 9*,#/ /
#-1 &*/
_-#;63$9/ AP(/9#/B $3)3/#-(*/7 l#0&36*/ %$ 2*)* ,3 _-#;6$39.#;3-+,#293- W ,3 _-#;63$9/ 2#-#
3$93$,3-&*/ 635*- W #/d /#03- ,3 =%3 3/9#6*/ Z#)(3$,* %/*7 _-#;63$.#;3-+,#293- 3/ %$#
(62&363$9#)(4$ ,3 .#;3-+,#293- =%3 U#)(&(9# 3& %/* ,3 _-#;63$9/ ,3$9-* ,3 %$ P(3a.#;3-7 8/9#
-
7/23/2019 Manual Inicio Android
167/276
!''
case0:TrazarRutaInternaFragment trazarInternaFragment = new
TrazarRutaInternaFragment();data.putInt("current_page", arg0+1);trazarInternaFragment.setArguments(data);fragment = trazarInternaFragment;
break;/** Pestaa para TrazarRutaExternaFragment es seleccionada
*/case1:
TrazarRutaExternaFragment trazarExternaFragment = newTrazarRutaExternaFragment();
data.putInt("current_page", arg0+1);trazarExternaFragment.setArguments(data);fragment = trazarExternaFragment;break;
}returnfragment;
}
/** Retorna el nmero de pginas */@OverridepublicintgetCount() {
returnPAGE_COUNT;}
}
K*$ 3/9* W# 93$,-d#6*/ 6*$9#,# 9*,# 3/9-%)9%-# ,3 )*$9-*&3/ $3)3/#-(# 2#-# $%3/9-# ($93-U#> ,3
23/9#c#/7 I($ 360#-;*: )*$ 3/9* $* 3/ /%U()(3$937 G3)3/(9#6*/ #/*)(#- ,3 #&;%$# U*-6# )#,# 23/9#c#
)*$ /% )*$93$(,*: ,3 U*-6# =%3 3& )*$9-*& /3 )*62*-93 )*--3)9#63$93 )%#$,* )#60(#6*/ ,3 23/9#c#7 O
3/9* 93$,-36*/ =%3 Z#)3-&* 63,(#$93 )4,(;*7
packagecom.android.utm.todosqlite;
importcom.android.utm.todosqlite.util.Utils;
importandroid.app.ActionBar;importandroid.content.Intent;importandroid.os.Bundle;importandroid.support.v4.app.FragmentActivity;importandroid.support.v4.app.FragmentManager;
importandroid.support.v4.view.ViewPager;importandroid.util.DisplayMetrics;importandroid.view.LayoutInflater;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.TabHost;importandroid.widget.TabHost.TabSpec;
-
7/23/2019 Manual Inicio Android
168/276
!'(
importandroid.widget.TextView;
/*** @authorNelsonPadilla**/
publicclassTrazarRutaFragment extendsFragmentActivity implementsTabHost.OnTabChangeListener{
privatestaticfinalString TAB_TRAZAR_INTERNA= "INTERNA";privatestaticfinalString TAB_TRAZAR_EXTERNA= "EXTERNA";privateViewPager mPager;privateFragmentManager supportFragmentManager;privateTabHost mTabHost;privateintmCurrentTab= 0;privateView indicator;privateTextView textTab;privateintDeviceWidth;
privateintDeviceHeight;
publicTrazarRutaFragment() {// TODOAuto-generated constructor stub
}
@OverridepublicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);setContentView(R.layout.fragment_trazar);
// Calcular la resolucin del dispositivoDisplayMetrics metrics = newDisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(metrics);
DeviceWidth= metrics.widthPixels;DeviceHeight= metrics.heightPixels;
// Obtener el ActionBarActionBar actionBar = getActionBar();// Establecer si queremos que la accin del icono sea
habilitado como ir a HomeactionBar.setDisplayHomeAsUpEnabled(true);
/*** Obtener una referencia al ViewPager en el layout* con esto lograremos hacer el swipe* */
mPager= (ViewPager) findViewById(R.id.pager_trazar_ruta);
/*** Cuando se usa un FragmetnActivity es necesario
-
7/23/2019 Manual Inicio Android
169/276
!')
* ejecutar este mtodo para obtener el FragmentManager* para interactuar con los frgments asociados* con esta activity* */
supportFragmentManager= getSupportFragmentManager();
/*** Definiendo un listener para el cambio de pginas* */
ViewPager.SimpleOnPageChangeListener pageChangeListener =newViewPager.SimpleOnPageChangeListener() {
@OverridepublicvoidonPageSelected(intposition) {
super.onPageSelected(position);/*** Al ocurrir el evento de un cambio de pgina
* lo que hacemos es seleccionar o establecemos* cul es la tab actual* */mTabHost.setCurrentTab(position);
}};
/** Estableciendo el pageChange listner para el viewPager */mPager.setOnPageChangeListener(pageChangeListener);
/** Creando una instancia de FragmentPagerAdapter */TrazarRutaFragmentPagerAdapter planningFragmentPagerAdapter
= newTrazarRutaFragmentPagerAdapter(supportFragmentManager);
/** Estableciendo el objeto FragmentPagerAdapter al objetoviewPager */
mPager.setAdapter(planningFragmentPagerAdapter);/** Establecemos un enlace entre el objeto TabHost* con el elemento contenedor de las tabs en el layout* */
mTabHost= (TabHost) findViewById(android.R.id.tabhost);setupTabs();
// Se agrega un listener, para detectar el momento en que
una tab es cambiadamTabHost.setOnTabChangedListener(this);
// Se establece cual es la pestaa seleccionada de origenmTabHost.setCurrentTab(mCurrentTab);// manualmente iniciando la carga en la primera tabupdateTab(TAB_TRAZAR_INTERNA, R.id.tab_1_interna);
}
-
7/23/2019 Manual Inicio Android
170/276
!'*
/** Mtodo en el que se establece* la accin a realizar al momento* de seleccionar algn elemento de* la ActionBar
* */@OverridepublicbooleanonOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {/** En caso de haber seleccionado el botn* habilitado como Home cargar la clase* MainActivity* */caseandroid.R.id.home:
Intent intent = newIntent(this, MainActivity.class);intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);break;// Something else
}returnsuper.onOptionsItemSelected(item);
}
/** Mtodo que se encargar de actualizar la vista,* esto es que cambiar de fragment segn sea la* tab seleccionada* */
privatevoidupdateTab(String arg0, intplaceholder) {if(supportFragmentManager.findFragmentByTag(arg0) == null)
{if(arg0.equals(TAB_TRAZAR_INTERNA)) {
newTrazarRutaInternaFragment();}if(arg0.equals(TAB_TRAZAR_EXTERNA)) {
newTrazarRutaExternaFragment();}
}}
/** Mtodo encargado de */
privatevoidsetupTabs() {/** Llamar setup() antes de aadir pestaas si se carga
TabHost usando findViewById ().* */
mTabHost.setup(); // Importante!!!
-
7/23/2019 Manual Inicio Android
171/276
!(+
// Se agrega cada una de las tabs, en nuestro ejemplo sloson 2
mTabHost.addTab(newTab(TAB_TRAZAR_INTERNA,R.id.tab_1_interna));
mTabHost.addTab(newTab(TAB_TRAZAR_EXTERNA,R.id.tab_2_externa));
}
/** Este mtodo de lo que se encarga es de crear un objeto
TabSpec.* Los objetos TabSpec contienen toda la informacin de cada Tab** */
privateTabSpec newTab(String tag, inttabContentId) {
indicator=LayoutInflater.from(this).inflate(R.layout.tab_layout_trazar,(ViewGrou
p) findViewById(android.R.id.tabs), false);textTab= (TextView) indicator.findViewById(R.id.icon);textTab.setTextSize(20);if(tag.equals(TAB_TRAZAR_INTERNA)){
textTab.setText(getString(R.string.title_section1));}if(tag.equals(TAB_TRAZAR_EXTERNA)){
textTab.setText(getString(R.string.title_section2));}
TabSpec tabSpec = mTabHost.newTabSpec(tag);tabSpec.setIndicator(indicator);tabSpec.setContent(tabContentId);Utils util = newUtils();// Configuramos el ancho del textView al 50% de la pantalla
del mvilutil.AdjustWidthScreen(DeviceWidth,DeviceHeight,50,textTab);
// Configuramos el alto del textView al 8% de la pantalladel mvil
util.AdjustHeightScreen(DeviceWidth,DeviceHeight,8,textTab);returntabSpec;
}
@Override
publicbooleanonCreateOptionsMenu(Menu menu) {// Inflar el men; esto agrega items a la barra de accin si
es que est presente.getMenuInflater().inflate(R.menu.tareas, menu);returntrue;
}
/*
-
7/23/2019 Manual Inicio Android
172/276
!(!
* Mtood que se encarga de establecer las* acciones a realizar cuando se hace un* cambio de Tabs* */
@OverridepublicvoidonTabChanged(String arg0) {
if(TAB_TRAZAR_INTERNA.equals(arg0)) {
// Se establece el nuevo fragment en la vistaupdateTab(arg0, R.id.tab_1_interna);mCurrentTab= 0;
// Se establece en el ViewPager cual debe de ser elfragment visible
this.mPager.setCurrentItem(mCurrentTab);return;
}if(TAB_TRAZAR_EXTERNA.equals(arg0)) {
// Se establece el nuevo fragment en la vistaupdateTab(arg0, R.id.tab_2_externa);mCurrentTab= 1;
// Se establece en el ViewPager cual debe de ser elfragment visible
this.mPager.setCurrentItem(mCurrentTab);return;
}}
}
!"#$" &' (#)*+" ,-
H# ($)&%/(4$ ,3 /*U9a#-3 =%3 &33 )4,(;*/ jL 3$ 93&hU*$*/ 64
-
7/23/2019 Manual Inicio Android
173/276
!(#
+$,-*(, 2*- ,3U#%&9 $* ($93;-# 3$ /% #2( %$ &3)9*- ,3 )4,(;*/ jL: 2#-# &* )%1& /3-1 $3)3/#-(* #;-3;#- %$#
&(0-3-d# =%3 $*/ #W%,#-1 W U#)(&(9#-1 3& 9-#0#5* ,3 &3)9%-# 3 ($93-2-39#)(4$ ,3& )4,(;*7
8/ #/d =%3 #$93/ ,3 3623>#- 93$,-36*/ =%3 #)-#- ,*/ )*/#/g ij%h /*$ &*/ )4,(;*/ jLk: W /3;%$,*
i,4$,3 *093$36*/ &(0-3-d#: W )46* ($/9#*/ 3$ $%3/9-* 2-*W3)9*k7
YZ?X $*/ "*$ BE0%8*$ ZD[
-3/2*$,(3$,* # 2-(63-# 2-3;%$9# 2*,36*/ ,3)(- =%3 %$ @U682- _NA Q=#2\ 41%8/0%1 2/;1: )4,(;* ,3
-3/2%3/9# -12(,#B 3/ %$ 64,%&* m9(& 2#-# #&6#)3$#- ($U*-6#)(4$ 3$ %$# 6#9-(> ,3 2%$9*/* %$ )4,(;*
,3 0#--#/0(,(63$/(*$#& )-3#,* 2*- )*62#cd# 5#2*$3/# ?3$/* e## 2*- &*/ 9-3/ )%#,-#,*/ =%3 /3 3$)%3$9-#$ 3$ / 3/=%($#/ W =%3 23-6(93$ ,393)9#-
2*/()(4$ ,3& )4,(;* #& &3)9*-7 H# /(; jL /3 ,3-($bW# )*$ 3/9* 2*,36*/ %/#- &(0-3-d# 3$ $%3/9-* 2-*W3)9*7
M'3:,1)1 '* '$ 2*&3),&N"*,P'1+
K46* &* Z36*/ #-36*/ $%3/9-* 35362&* )*$ ,3)-#)(4$
,3 23-6(/*/ 3$ 3& #-)Z(
-
7/23/2019 Manual Inicio Android
174/276
!($
android:required="false"/>
O 2#-# $%3/9-* 2-*W3)9*
-
7/23/2019 Manual Inicio Android
175/276
!(%
xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical">
8$ 3& 6*63$9* 3$ =%3 W# /3 3/9h 353)%9#$,* #2&()#)(4$ W 3/936*/ &3W3$,* #&;m$ )4,(;* jL
-
7/23/2019 Manual Inicio Android
176/276
!(&
O# 93-6($#,# )-3#)(4$ ,3& W*%9 ,3 )16#-# 2#-# 3& &3)9*- 3/ 6*63$9* ,3 2-*)3,3- # )-3#)(4$
,3& W*%9 =%3 6*/9-#-1 3/ ,36#/(#,* /(62&3 2%3/ $* 3/
3& )#/* ,3 3/93 35362&*
-
7/23/2019 Manual Inicio Android
177/276
!('
android:id="@+id/summary_result"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"/>
H# ($93-U#> =%3 #)#0#6*/ ,3 )-3#- #& 6*63$9* ,3 W# Z#03- &3d,* %$ )4,(;*
-
7/23/2019 Manual Inicio Android
178/276
!((
-36*/ j7/Vk: =%3,#$,* ,3 3/9# 6#$3-# i73=i7/ViF33?D-22: W )*6*
-
7/23/2019 Manual Inicio Android
179/276
!()
* inicio para el audio y para la vibracion* */
publicBeepManager(Activity activity) {this.activity= activity;this.mediaPlayer= null;updatePrefs();
}
voidupdatePrefs() {
/** Obtiene las preferencias compartidas del contexto* relacionado con este contexto* */
SharedPreferences prefs =PreferenceManager.getDefaultSharedPreferences(activity);
playBeep= shouldBeep(prefs, activity);vibrate= true;//
prefs.getBoolean(PreferencesActivity.KEY_VIBRATE,// false);if(playBeep&& mediaPlayer== null) {
// The volume on STREAM_SYSTEM is not adjustable, andusers found it
// too loud,// so we now play on the music stream.
activity.setVolumeControlStream(AudioManager.STREAM_MUSIC);mediaPlayer= buildMediaPlayer(activity);
}}
/** Con este mtodo se inicia el reproductor e iniciar* la reproduccin del archivo de audio, as como inicia* la vibracin del mvil* */
publicvoidplayBeepSoundAndVibrate() {if(playBeep&& mediaPlayer!= null) {
mediaPlayer.start();}if(vibrate) {
Vibrator vibrator = (Vibrator)activity.getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(VIBRATE_DURATION);}
}
/** Mtodo que determina si el sonido del beep* se podr reproducir, esto se debe a las* condiciones en las que se tengan del volumen
-
7/23/2019 Manual Inicio Android
180/276
!(*
* del audio de todo el sistema. Si est en modo* silencio el beep no se reproduce* */
privatestaticbooleanshouldBeep(SharedPreferences prefs,Context activity) {
booleanshouldPlayBeep = true;//
prefs.getBoolean(PreferencesActivity.KEY_PLAY_BEEP,// true);
if(shouldPlayBeep) {// See if sound settings overrides thisAudioManager audioService = (AudioManager) activity
.getSystemServ