Save informations on rotation for download assistant

This commit is contained in:
Erwan Croze 2016-07-01 10:52:20 +02:00
parent 9e5b475d8c
commit f2c6bf325e
2 changed files with 105 additions and 38 deletions

View file

@ -74,6 +74,7 @@ private static AssistantActivity instance;
private ProgressDialog progress;
private Dialog dialog;
private boolean remoteProvisioningInProgress;
private boolean echoCancellerAlreadyDone;
private static final int PERMISSIONS_REQUEST_RECORD_AUDIO = 201;
protected void onCreate(Bundle savedInstanceState) {
@ -94,6 +95,11 @@ private static AssistantActivity instance;
currentFragment = (AssistantFragmentsEnum) savedInstanceState.getSerializable("CurrentFragment");
}
}
if (savedInstanceState != null && savedInstanceState.containsKey("echoCanceller")) {
echoCancellerAlreadyDone = savedInstanceState.getBoolean("echoCanceller");
} else {
echoCancellerAlreadyDone = false;
}
mPrefs = LinphonePreferences.instance();
//if(mPrefs.isFirstLaunch()) {
status.enableSideMenu(false);
@ -154,6 +160,7 @@ private static AssistantActivity instance;
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putSerializable("CurrentFragment", currentFragment);
outState.putBoolean("echoCanceller", echoCancellerAlreadyDone);
super.onSaveInstanceState(outState);
}
@ -179,6 +186,10 @@ private static AssistantActivity instance;
transaction.commitAllowingStateLoss();
}
public AssistantFragmentsEnum getCurrentFragment() {
return currentFragment;
}
@Override
public void onClick(View v) {
int id = v.getId();
@ -253,13 +264,14 @@ private static AssistantActivity instance;
private boolean launchEchoCancellerCalibration(boolean sendEcCalibrationResult) {
if (getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName()) == PackageManager.PERMISSION_GRANTED) {
boolean needsEchoCalibration = LinphoneManager.getLc().needsEchoCalibration();
if (needsEchoCalibration && mPrefs.isFirstLaunch()) {
if (needsEchoCalibration && mPrefs.isFirstLaunch() && !echoCancellerAlreadyDone) {
EchoCancellerCalibrationFragment fragment = new EchoCancellerCalibrationFragment();
fragment.enableEcCalibrationResultSending(sendEcCalibrationResult);
changeFragment(fragment);
currentFragment = AssistantFragmentsEnum.ECHO_CANCELLER_CALIBRATION;
back.setVisibility(View.VISIBLE);
cancel.setEnabled(false);
echoCancellerAlreadyDone = true;
return true;
}
} else {

View file

@ -29,6 +29,7 @@ import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import org.linphone.LinphoneActivity;
import org.linphone.LinphoneManager;
import org.linphone.R;
import org.linphone.core.LinphoneCoreFactory;
@ -41,23 +42,31 @@ import org.linphone.tools.OpenH264DownloadHelper;
* @author Erwan CROZE
*/
public class CodecDownloaderFragment extends Fragment {
private Handler mHandler = new Handler();
private Handler mHandler = new Handler();
private TextView question;
private TextView downloading;
private TextView downloaded;
private Button yes;
private Button no;
private Button ok;
private ProgressBar bar;
private TextView downloadingInfo;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.assistant_codec_downloader, container, false);
final TextView question = (TextView) view.findViewById(R.id.question);
final TextView downloading = (TextView) view.findViewById(R.id.downloading);
final TextView downloaded = (TextView) view.findViewById(R.id.downloaded);
final Button yes = (Button) view.findViewById(R.id.answerYes);
final Button no = (Button) view.findViewById(R.id.answerNo);
final Button ok = (Button) view.findViewById(R.id.answerOk);
final ProgressBar bar = (ProgressBar) view.findViewById(R.id.progressBar);
final TextView downloadingInfo = (TextView) view.findViewById(R.id.downloadingInfo);
question = (TextView) view.findViewById(R.id.question);
downloading = (TextView) view.findViewById(R.id.downloading);
downloaded = (TextView) view.findViewById(R.id.downloaded);
yes = (Button) view.findViewById(R.id.answerYes);
no = (Button) view.findViewById(R.id.answerNo);
ok = (Button) view.findViewById(R.id.answerOk);
bar = (ProgressBar) view.findViewById(R.id.progressBar);
downloadingInfo = (TextView) view.findViewById(R.id.downloadingInfo);
final OpenH264DownloadHelper codecDownloader = LinphoneCoreFactory.instance().createOpenH264DownloadHelper();
final OpenH264DownloadHelper codecDownloader = LinphoneManager.getInstance().getOpenH264DownloadHelper();
final OpenH264DownloadHelperListener codecListener = new OpenH264DownloadHelperListener() {
@Override
@ -66,16 +75,16 @@ public class CodecDownloaderFragment extends Fragment {
@Override
public void run() {
if (current <= max) {
hideAllItems();
downloadingInfo.setText(current + " / " + max);
downloadingInfo.setVisibility(View.VISIBLE);
downloading.setVisibility(View.VISIBLE);
bar.setMax(max);
bar.setProgress(current);
bar.setVisibility(View.VISIBLE);
} else {
downloadingInfo.setVisibility(View.INVISIBLE);
bar.setVisibility(View.INVISIBLE);
hideAllItems();
LinphoneManager.getLc().reloadMsPlugins(null);
downloading.setVisibility(View.INVISIBLE);
downloaded.setVisibility(View.VISIBLE);
enabledH264(true);
AssistantActivity.instance().endDownloadCodec();
@ -85,16 +94,11 @@ public class CodecDownloaderFragment extends Fragment {
}
@Override
public void OnError (final String error){
public void OnError(final String error) {
mHandler.post(new Runnable() {
@Override
public void run() {
question.setVisibility(View.INVISIBLE);
downloading.setVisibility(View.INVISIBLE);
yes.setVisibility(View.INVISIBLE);
no.setVisibility(View.INVISIBLE);
bar.setVisibility(View.INVISIBLE);
downloadingInfo.setVisibility(View.INVISIBLE);
hideAllItems();
downloaded.setText("Sorry an error has occurred.");
downloaded.setVisibility(View.VISIBLE);
ok.setVisibility(View.VISIBLE);
@ -106,25 +110,15 @@ public class CodecDownloaderFragment extends Fragment {
};
codecDownloader.setOpenH264HelperListener(codecListener);
downloading.setVisibility(View.INVISIBLE);
downloaded.setVisibility(View.INVISIBLE);
bar.setVisibility(View.INVISIBLE);
downloadingInfo.setVisibility(View.INVISIBLE);
ok.setVisibility(View.INVISIBLE);
yes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
question.setVisibility(View.INVISIBLE);
yes.setVisibility(View.INVISIBLE);
no.setVisibility(View.INVISIBLE);
downloading.setVisibility(View.VISIBLE);
ok.setVisibility(View.INVISIBLE);
bar.setVisibility(View.VISIBLE);
downloadingInfo.setVisibility(View.INVISIBLE);
codecDownloader.downloadCodec();
}
});
@Override
public void onClick(View v) {
hideAllItems();
bar.setVisibility(View.VISIBLE);
codecDownloader.downloadCodec();
}
});
no.setOnClickListener(new View.OnClickListener() {
@Override
@ -133,10 +127,71 @@ public class CodecDownloaderFragment extends Fragment {
AssistantActivity.instance().endDownloadCodec();
}
});
hideAllItems();
if (savedInstanceState != null) {
if (savedInstanceState.containsKey("question"))
question.setVisibility((Integer) savedInstanceState.getSerializable("question"));
else
question.setVisibility(View.VISIBLE);
if (savedInstanceState.containsKey("yes"))
yes.setVisibility((Integer) savedInstanceState.getSerializable("yes"));
else
yes.setVisibility(View.VISIBLE);
if (savedInstanceState.containsKey("no"))
no.setVisibility((Integer) savedInstanceState.getSerializable("no"));
else
no.setVisibility(View.VISIBLE);
if (savedInstanceState.containsKey("downloading"))
downloading.setVisibility((Integer) savedInstanceState.getSerializable("downloading"));
if (savedInstanceState.containsKey("downloaded"))
downloaded.setVisibility((Integer) savedInstanceState.getSerializable("downloaded"));
if (savedInstanceState.containsKey("bar"))
bar.setVisibility((Integer) savedInstanceState.getSerializable("bar"));
if (savedInstanceState.containsKey("downloadingInfo"))
downloadingInfo.setVisibility((Integer) savedInstanceState.getSerializable("downloadingInfo"));
if (savedInstanceState.containsKey("ok"))
ok.setVisibility((Integer) savedInstanceState.getSerializable("ok"));
} else {
yes.setVisibility(View.VISIBLE);
question.setVisibility(View.VISIBLE);
no.setVisibility(View.VISIBLE);
}
return view;
}
@Override
public void onSaveInstanceState(Bundle outState) {
if (question != null) outState.putSerializable("question", question.getVisibility());
if (downloading != null) outState.putSerializable("downloading", downloading.getVisibility());
if (downloaded != null) outState.putSerializable("downloaded", downloaded.getVisibility());
if (yes != null) outState.putSerializable("yes", yes.getVisibility());
if (no != null) outState.putSerializable("no", no.getVisibility());
if (ok != null) outState.putSerializable("ok", ok.getVisibility());
if (bar != null) outState.putSerializable("bar", bar.getVisibility());
if (downloadingInfo != null) outState.putSerializable("downloadingInfo", downloadingInfo.getVisibility());
super.onSaveInstanceState(outState);
}
private void hideAllItems() {
if (question != null) question.setVisibility(View.INVISIBLE);
if (downloading != null) downloading.setVisibility(View.INVISIBLE);
if (downloaded != null) downloaded.setVisibility(View.INVISIBLE);
if (yes != null) yes.setVisibility(View.INVISIBLE);
if (no != null) no.setVisibility(View.INVISIBLE);
if (ok != null) ok.setVisibility(View.INVISIBLE);
if (bar != null) bar.setVisibility(View.INVISIBLE);
if (downloadingInfo != null) downloadingInfo.setVisibility(View.INVISIBLE);
}
private void enabledH264(boolean enable) {
PayloadType h264 = null;
for (PayloadType pt : LinphoneManager.getLc().getVideoCodecs()) {