La fonction ci-dessous fait partie du code pour l'application Appareil photo de Google. Je n'ai pas compris la logique des déclarations en gras. S'il vous plaît aider.Besoin d'aide pour interpréter le code de Google pour l'application Appareil photo Android
int secondes = intention.getIntExtra (MediaStore.EXTRA_DURATION_LIMIT, 0); mMaxVideoDurationInMs = 1000 * secondes;
mMediaRecorder.setMaxDuration (mMaxVideoDurationInMs);
// cette fonction est de mettre à jour la durée d'enregistrement
updateRecordingTime private void() { if (mMediaRecorderRecording!) { de retour; } depuis longtemps maintenant = SystemClock.uptimeMillis(); long delta = maintenant - mRecordingStartTime;
// Starting a minute before reaching the max duration
// limit, we'll countdown the remaining time instead.
boolean countdownRemainingTime = (mMaxVideoDurationInMs != 0
&& delta >= mMaxVideoDurationInMs - 60000);
long next_update_delay = 1000 - (delta % 1000);
long seconds;
if (countdownRemainingTime) {
**delta = Math.max(0, mMaxVideoDurationInMs - delta);
seconds = (delta + 999)/1000;**
} else {
**seconds = delta/1000; // round to nearest**
}
long minutes = seconds/60;
long hours = minutes/60;
long remainderMinutes = minutes - (hours * 60);
long remainderSeconds = seconds - (minutes * 60);
String secondsString = Long.toString(remainderSeconds);
if (secondsString.length() < 2) {
secondsString = "0" + secondsString;
}
String minutesString = Long.toString(remainderMinutes);
if (minutesString.length() < 2) {
minutesString = "0" + minutesString;
}
String text = minutesString + ":" + secondsString;
if (hours > 0) {
String hoursString = Long.toString(hours);
if (hoursString.length() < 2) {
hoursString = "0" + hoursString;
}
text = hoursString + ":" + text;
}
mRecordingTimeView.setText(text);
if (mRecordingTimeCountsDown != countdownRemainingTime) {
// Avoid setting the color on every update, do it only
// when it needs changing.
mRecordingTimeCountsDown = countdownRemainingTime;
int color = getResources().getColor(countdownRemainingTime
? R.color.recording_time_remaining_text
: R.color.recording_time_elapsed_text);
mRecordingTimeView.setTextColor(color);
}
// Work around a limitation of the T-Mobile G1: The T-Mobile
// hardware blitter can't pixel-accurately scale and clip at the
// same time, and the SurfaceFlinger doesn't attempt to work around
// this limitation. In order to avoid visual corruption we must
// manually refresh the entire surface view when changing any
// overlapping view's contents.
mVideoPreview.invalidate();
mHandler.sendEmptyMessageDelayed(
UPDATE_RECORD_TIME, next_update_delay);
}
Oui ce sont les lignes dont je parlais to.Thank vous. Mais, je n'ai pas vraiment compris 'delta'. et quelle est la différence entre la ligne 2 et 3? dans la ligne 2, le ms se fait larguer n'est-ce pas? Quel est le besoin de la ligne 3? – Namratha
J'ai mis à jour la réponse (puisque le formatage est plus facile dans la partie réponse). Est ce que ça aide? – mbafford
compte à rebours booléenRemainingTime = (mMaxVideoDurationInMs! = 0 && delta> = mMaxVideoDurationInMs - 60000); Pourriez-vous expliquer cette ligne s'il vous plaît? – Namratha