1
1
package com .github .androidify ;
2
2
3
3
import android .content .Intent ;
4
+ import android .content .pm .PackageManager ;
4
5
import android .graphics .Bitmap ;
5
6
import android .net .Uri ;
6
7
import android .os .Bundle ;
7
8
import android .provider .MediaStore ;
9
+ import android .support .annotation .NonNull ;
8
10
import android .support .v4 .app .Fragment ;
9
11
import android .support .v4 .app .FragmentManager ;
12
+ import android .support .v4 .content .ContextCompat ;
10
13
import android .support .v4 .view .ViewPager ;
11
14
import android .view .LayoutInflater ;
12
15
import android .view .MotionEvent ;
@@ -19,21 +22,26 @@ public class PlaceholderFragment extends Fragment {
19
22
private final String mySound = "my_recorded_sound" ;
20
23
private AndroidSoundRecorder soundRecorder ;
21
24
private AndroidSoundPlayer soundPlayer ;
25
+ private ViewPager mViewPagerHead ;
26
+ private ViewPager mViewPagerBody ;
27
+ private ViewPager mViewPagerLegs ;
28
+
29
+ private static final int WRITE_EXTERNAL_STORAGE = 1 ;
22
30
23
31
@ Override
24
32
public View onCreateView (LayoutInflater inflater , ViewGroup container ,
25
33
Bundle savedInstanceState ) {
26
34
final View rootView = inflater .inflate (R .layout .fragment_main , container , false );
27
- final ViewPager viewPagerHead = (ViewPager ) rootView .findViewById (R .id .viewPagerHead );
28
- final ViewPager viewPagerBody = (ViewPager ) rootView .findViewById (R .id .viewPagerBody );
29
- final ViewPager viewPagerLegs = (ViewPager ) rootView .findViewById (R .id .viewPagerLegs );
35
+ mViewPagerHead = (ViewPager ) rootView .findViewById (R .id .viewPagerHead );
36
+ mViewPagerBody = (ViewPager ) rootView .findViewById (R .id .viewPagerBody );
37
+ mViewPagerLegs = (ViewPager ) rootView .findViewById (R .id .viewPagerLegs );
30
38
31
39
FragmentManager fm = getActivity ().getSupportFragmentManager ();
32
- viewPagerHead .setAdapter (new AndroidifyViewPagerAdapter (fm , AndroidDrawables .getHeads ()));
33
- viewPagerBody .setAdapter (new AndroidifyViewPagerAdapter (fm , AndroidDrawables .getBodies ()));
34
- viewPagerLegs .setAdapter (new AndroidifyViewPagerAdapter (fm , AndroidDrawables .getLegs ()));
40
+ mViewPagerHead .setAdapter (new AndroidifyViewPagerAdapter (fm , AndroidDrawables .getHeads ()));
41
+ mViewPagerBody .setAdapter (new AndroidifyViewPagerAdapter (fm , AndroidDrawables .getBodies ()));
42
+ mViewPagerLegs .setAdapter (new AndroidifyViewPagerAdapter (fm , AndroidDrawables .getLegs ()));
35
43
36
- initShareButton (rootView , viewPagerHead , viewPagerBody , viewPagerLegs );
44
+ initShareButton (rootView );
37
45
initPlayButton (rootView );
38
46
initRecordButton (rootView );
39
47
@@ -81,29 +89,52 @@ public boolean onTouch(View view, MotionEvent motionEvent) {
81
89
});
82
90
}
83
91
84
- private void initShareButton (View rootView , final ViewPager viewPagerHead , final ViewPager viewPagerBody , final ViewPager viewPagerLegs ) {
92
+ private void initShareButton (View rootView ) {
85
93
View shareButton = rootView .findViewById (R .id .button_share );
86
94
shareButton .setOnClickListener (new View .OnClickListener () {
87
95
@ Override
88
96
public void onClick (View view ) {
89
- Integer head = AndroidDrawables .getHeads ().get (viewPagerHead .getCurrentItem ());
90
- Integer body = AndroidDrawables .getBodies ().get (viewPagerBody .getCurrentItem ());
91
- Integer legs = AndroidDrawables .getLegs ().get (viewPagerLegs .getCurrentItem ());
92
-
93
- Bitmap bitmap = BitmapUtils .combineDrawables (getResources (), head , body , legs );
97
+ int permissionCheck = ContextCompat .checkSelfPermission (getActivity (),
98
+ android .Manifest .permission .WRITE_EXTERNAL_STORAGE );
94
99
95
- String imagePath = MediaStore .Images .Media .insertImage (getActivity ().getContentResolver (), bitmap , "Android Avatar" , null );
96
- Uri imageURI = Uri .parse (imagePath );
97
- startShareActivity (imageURI );
100
+ if (permissionCheck != PackageManager .PERMISSION_GRANTED ) {
101
+ requestPermissions (
102
+ new String [] { android .Manifest .permission .WRITE_EXTERNAL_STORAGE },
103
+ WRITE_EXTERNAL_STORAGE );
104
+ } else {
105
+ share ();
106
+ }
98
107
}
99
108
});
100
109
}
101
110
102
111
@ Override
103
- public void onPause () {
104
- super .onPause ();
105
- soundRecorder .stopRecording ();
106
- soundPlayer .stopPlaying ();
112
+ public void onRequestPermissionsResult (int requestCode , @ NonNull String [] permissions , @ NonNull int [] grantResults ) {
113
+ switch (requestCode ) {
114
+
115
+ case WRITE_EXTERNAL_STORAGE :
116
+ if ((grantResults .length > 0 ) && (grantResults [0 ] == PackageManager .PERMISSION_GRANTED )) {
117
+ share ();
118
+ }
119
+ break ;
120
+
121
+ default :
122
+ break ;
123
+ }
124
+ }
125
+
126
+ private void share () {
127
+ Integer head = AndroidDrawables .getHeads ().get (mViewPagerHead .getCurrentItem ());
128
+ Integer body = AndroidDrawables .getBodies ().get (mViewPagerBody .getCurrentItem ());
129
+ Integer legs = AndroidDrawables .getLegs ().get (mViewPagerLegs .getCurrentItem ());
130
+
131
+ Bitmap bitmap = BitmapUtils .combineDrawables (getResources (), head , body , legs );
132
+
133
+ String imagePath = MediaStore .Images .Media .insertImage (
134
+ getActivity ().getContentResolver (), bitmap ,
135
+ getResources ().getString (R .string .android_avatar ), null );
136
+ Uri imageURI = Uri .parse (imagePath );
137
+ startShareActivity (imageURI );
107
138
}
108
139
109
140
private void startShareActivity (Uri imageURI ) {
@@ -115,4 +146,11 @@ private void startShareActivity(Uri imageURI) {
115
146
116
147
startActivity (shareIntent );
117
148
}
149
+
150
+ @ Override
151
+ public void onPause () {
152
+ super .onPause ();
153
+ soundRecorder .stopRecording ();
154
+ soundPlayer .stopPlaying ();
155
+ }
118
156
}
0 commit comments