###前提・実現したいこと
アプリ開発初心者です。よろしくお願いいたします。
Android Studioで、ある既存のアプリを改良しています。
アプリ内のFragmentが生きている間に、加速度センサーの値をファイルに出力したいです。
まず加速度センサーを出力するアプリを別で作成しました。
その後、コードを既存アプリのFragment内に書き写していきました。
通常通りアプリは動作するのですが、値・ログが出力されません
勉強不足のため全く見当違いのことをしているかもしれません。どうぞ宜しくお願いします。
※既存アプリの概要は、避難訓練のアプリです。
端末を持って歩き、ある地点に到達するとこのFragmentが起動し、画像や選択肢、テキストボックスが表示されます。
※加速度センサーの値を出力するアプリは、以下を参考にして作りました。
https://teratail.com/questions/49794
###発生している問題・エラーメッセージ
アプリは通常通り動作するのですが、値が出力されません。
Log.dのでも出力されません。
###該当のソースコード
Java
1 2public class EventNoteFragment extends Fragment implements SensorEventListener { 3 4 private static final String TAG = EventNoteFragment.class.getSimpleName(); 5 private static final String URL_FORMAT = "http://training.bosai.club/images/event/%d.jpg"; 6 private EventDialogActivity parent; 7 private HashMap<Integer, Integer> scoreMap; 8 9 private Target panoTarget = null; 10 11 public Sensor accSensor; 12 public SensorManager manager; 13 public int button_flag = 0; 14 15 @Override 16 public void onSensorChanged(SensorEvent sensorEvent) { 17 18 manager = (SensorManager) getActivity().getSystemService(SENSOR_SERVICE); 19 accSensor = this.manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 20 21 if (button_flag == 0) { 22 23 Log.d("SENSOR_DATA", "TYPE_ACCELEROMETER1 = " + String.valueOf(sensorEvent.values[0])); 24 25 try { 26 //出力先を作成する 27 FileWriter fw = new FileWriter(Environment.getExternalStorageDirectory().getPath() + "/test.csv", true); 28 PrintWriter pw = new PrintWriter(new BufferedWriter(fw)); 29 30 //内容を指定する 31 pw.print(String.valueOf(sensorEvent.values[0])); 32 pw.print(","); 33 pw.print(String.valueOf(sensorEvent.values[1])); 34 pw.print(","); 35 pw.print(String.valueOf(sensorEvent.values[2])); 36 pw.println(); 37 38 //ファイルに書き出す 39 pw.close(); 40 41 } catch (IOException ex) { 42 //例外時処理 43 ex.printStackTrace(); 44 } 45 46 } else { 47 48 } 49 50 } 51 52 @Override 53 public void onAccuracyChanged(Sensor sensor, int accuracy) { 54 Log.d("hoge", "hogege"); 55 56 } 57 58 public void onAttach(Activity activity) { 59 parent = (EventDialogActivity) activity; 60 61 super.onAttach(activity); 62 } 63 64 @Nullable 65 @Override 66 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 67 68 final View view = inflater.inflate(R.layout.fragment_event_note, container, false); 69 view.findViewById(R.id.button_event_note).setOnClickListener(new EventAlertButtonClickListener()); 70 71 // Set description 72 ((TextView) view.findViewById(R.id.label_event_note_description)).setText(parent.missionArea.getDescription()); 73 74 // Set situation 75 final String[] situations = getResources().getStringArray(R.array.event_type_situations); 76 final String situationText = getString(R.string.label_event_situation, 77 parent.missionArea.getTitle(), 78 situations[parent.missionArea.getEventType().getId()]); 79 80 final TextView labelEventNoteSituationTextView = (TextView) view.findViewById(R.id.label_event_note_situation); 81 labelEventNoteSituationTextView.setText(situationText); 82 83 final TextView labelEventNoteTextView = (TextView) view.findViewById(R.id.label_event_note); 84 final EditText editEventNoteEditText = (EditText) view.findViewById(R.id.edit_event_note); 85 86 switch (parent.missionArea.getAreaType()) { 87 case START: 88 labelEventNoteSituationTextView.setBackgroundColor(getResources().getColor(R.color.event_red)); 89 90 labelEventNoteTextView.setText(R.string.label_event_note_start); 91 editEventNoteEditText.setHint(R.string.hint_note_start); 92 break; 93 case EVENT: 94 labelEventNoteSituationTextView.setBackgroundColor(getResources().getColor(R.color.event_orange)); 95 96 labelEventNoteTextView.setText(R.string.label_event_note_event); 97 editEventNoteEditText.setHint(R.string.hint_note_event); 98 99 break; 100 case INFORMATION: 101 labelEventNoteSituationTextView.setBackgroundColor(getResources().getColor(R.color.event_blue)); 102 break; 103 case GOAL: 104 labelEventNoteSituationTextView.setBackgroundColor(getResources().getColor(R.color.event_green)); 105 break; 106 } 107 108 // Set image 109 final ImageView eventNoteImageView = (ImageView) view.findViewById(R.id.image_event_note); 110 final VrPanoramaView panoView = (VrPanoramaView) view.findViewById(R.id.pano_view); 111 if (parent.missionArea.getAreaType() == AreaType.EVENT) { 112 // EVENT 113 final String imageUrl = String.format(URL_FORMAT, parent.missionArea.getId() % 100); // もとのURL取得 114 115 panoTarget = new Target() { 116 @Override 117 public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { 118 VrPanoramaView.Options panoOptions = null; 119 panoOptions = new VrPanoramaView.Options(); 120 panoOptions.inputType = VrPanoramaView.Options.TYPE_MONO; 121 122 eventNoteImageView.setVisibility(View.INVISIBLE); 123 panoView.setVisibility(View.VISIBLE); 124 panoView.loadImageFromBitmap(bitmap, panoOptions); 125 126 panoView.setFullscreenButtonEnabled(true); 127 panoView.setInfoButtonEnabled(false); 128 panoView.setTouchTrackingEnabled(true); 129 panoView.setStereoModeButtonEnabled(false); 130 } 131 132 @Override 133 public void onBitmapFailed(Drawable errorDrawable) { 134 eventNoteImageView.setVisibility(View.VISIBLE); 135 panoView.setVisibility(View.INVISIBLE); 136 eventNoteImageView.setImageDrawable(errorDrawable); 137 } 138 139 @Override 140 public void onPrepareLoad(Drawable placeHolderDrawable) { 141 eventNoteImageView.setVisibility(View.VISIBLE); 142 panoView.setVisibility(View.INVISIBLE); 143 eventNoteImageView.setImageDrawable(placeHolderDrawable); 144 } 145 }; 146 147 Picasso.with(parent).load(imageUrl).into(panoTarget); 148 } else { 149 // START, GOAL, INFORMATION 150 eventNoteImageView.setVisibility(View.VISIBLE); 151 panoView.setVisibility(View.INVISIBLE); 152 153 final String imageResName = "image_" + parent.missionArea.getEventType().toString().toLowerCase(); 154 final int imageResId = getResources().getIdentifier(imageResName, "drawable", parent.getPackageName()); 155 eventNoteImageView.setImageResource(imageResId); 156 } 157 158 int actionCount = parent.missionArea.getAction().length; 159 160 // Generate random index 161 Integer[] indexes = new Integer[actionCount]; 162 for (int i = 0; i < indexes.length; i++) { 163 indexes[i] = i; 164 } 165 166 List<Integer> indexList = Arrays.asList(indexes); 167 Collections.shuffle(indexList); 168 169 // Set radiobutton 170 scoreMap = new HashMap<>(); 171 for (int i = 0; i < actionCount; i++) { 172 int buttonResId = getResources().getIdentifier("event_action_select" + i, "id", parent.getPackageName()); 173 final RadioButton radioButton = (RadioButton) view.findViewById(buttonResId); 174 175 int index = indexList.get(i); // Random-ordered index 176 177 radioButton.setText(parent.missionArea.getAction()[index]); 178 179 // key: ResourceId of Radio Button, value: score 180 scoreMap.put(radioButton.getId(), parent.missionArea.getScore()[index]); 181 182 radioButton.setVisibility(View.VISIBLE); 183 } 184 185 final RadioGroup radioGroup = (RadioGroup) view.findViewById(R.id.radio_group_event_action); 186 radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 187 @Override 188 public void onCheckedChanged(RadioGroup group, int checkedId) { 189 final EditText otherActionEditText = (EditText) view.findViewById(R.id.other_action_edit_text); 190 191 if (checkedId == R.id.event_action_select_other) { 192 otherActionEditText.setVisibility(View.VISIBLE); 193 } else { 194 otherActionEditText.setVisibility(View.GONE); 195 } 196 } 197 198 }); 199 return view; 200 } 201 202 private class EventAlertButtonClickListener implements View.OnClickListener { 203 204 @Override 205 public void onClick(View v) { 206 final EditText otherActionEditText = (EditText) getActivity().findViewById(R.id.other_action_edit_text); 207 final boolean isOtherActionWrote = !otherActionEditText.getText().toString().equals(""); 208 209 final RadioGroup radioGroup = (RadioGroup) getActivity().findViewById(R.id.radio_group_event_action); 210 final int selectedActionId = radioGroup.getCheckedRadioButtonId(); 211 final boolean isActionSelected = ((selectedActionId == R.id.event_action_select_other) && isOtherActionWrote) 212 || ((selectedActionId != R.id.event_action_select_other) && (selectedActionId > 0)); 213 214 final EditText descriptionEditText = (EditText) getActivity().findViewById(R.id.edit_event_note); 215 final boolean isNoteWrote = !descriptionEditText.getText().toString().equals(""); 216 217 if (isActionSelected && isNoteWrote) { 218 // Action 219 RadioButton selectedRadioButton = (RadioButton) getActivity().findViewById(selectedActionId); 220 221 parent.actionPoint.setSelectedAction(selectedRadioButton.getText().toString()); 222 parent.actionPoint.setSelectedActionNote(otherActionEditText.getText().toString()); 223 224 if (scoreMap.containsKey(selectedRadioButton.getId())) { 225 final Integer score = scoreMap.get(selectedRadioButton.getId()); 226 parent.actionPoint.setScore(score); 227 } else { 228 parent.actionPoint.setScore(3); 229 } 230 231 // Note 232 parent.actionPoint.setDescription(descriptionEditText.getText().toString()); 233 234 parent.decideFragment(EventDialogActivity.Step.ADVICE); 235 } else { 236 Toast.makeText(parent, getString(R.string.info_no_input), Toast.LENGTH_SHORT).show(); 237 } 238 }
###補足情報(言語/FW/ツール等のバージョンなど)
端末:NEXUS7
minSdkVersion:19
targetSdkVersion:21