Save informations on rotation for download assistant
This commit is contained in:
parent
9e5b475d8c
commit
f2c6bf325e
2 changed files with 105 additions and 38 deletions
|
@ -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 {
|
||||
|
|
|
@ -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()) {
|
||||
|
|
Loading…
Reference in a new issue