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 ProgressDialog progress;
|
||||||
private Dialog dialog;
|
private Dialog dialog;
|
||||||
private boolean remoteProvisioningInProgress;
|
private boolean remoteProvisioningInProgress;
|
||||||
|
private boolean echoCancellerAlreadyDone;
|
||||||
private static final int PERMISSIONS_REQUEST_RECORD_AUDIO = 201;
|
private static final int PERMISSIONS_REQUEST_RECORD_AUDIO = 201;
|
||||||
|
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
@ -94,6 +95,11 @@ private static AssistantActivity instance;
|
||||||
currentFragment = (AssistantFragmentsEnum) savedInstanceState.getSerializable("CurrentFragment");
|
currentFragment = (AssistantFragmentsEnum) savedInstanceState.getSerializable("CurrentFragment");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (savedInstanceState != null && savedInstanceState.containsKey("echoCanceller")) {
|
||||||
|
echoCancellerAlreadyDone = savedInstanceState.getBoolean("echoCanceller");
|
||||||
|
} else {
|
||||||
|
echoCancellerAlreadyDone = false;
|
||||||
|
}
|
||||||
mPrefs = LinphonePreferences.instance();
|
mPrefs = LinphonePreferences.instance();
|
||||||
//if(mPrefs.isFirstLaunch()) {
|
//if(mPrefs.isFirstLaunch()) {
|
||||||
status.enableSideMenu(false);
|
status.enableSideMenu(false);
|
||||||
|
@ -154,6 +160,7 @@ private static AssistantActivity instance;
|
||||||
@Override
|
@Override
|
||||||
protected void onSaveInstanceState(Bundle outState) {
|
protected void onSaveInstanceState(Bundle outState) {
|
||||||
outState.putSerializable("CurrentFragment", currentFragment);
|
outState.putSerializable("CurrentFragment", currentFragment);
|
||||||
|
outState.putBoolean("echoCanceller", echoCancellerAlreadyDone);
|
||||||
super.onSaveInstanceState(outState);
|
super.onSaveInstanceState(outState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -179,6 +186,10 @@ private static AssistantActivity instance;
|
||||||
transaction.commitAllowingStateLoss();
|
transaction.commitAllowingStateLoss();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public AssistantFragmentsEnum getCurrentFragment() {
|
||||||
|
return currentFragment;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
int id = v.getId();
|
int id = v.getId();
|
||||||
|
@ -253,13 +264,14 @@ private static AssistantActivity instance;
|
||||||
private boolean launchEchoCancellerCalibration(boolean sendEcCalibrationResult) {
|
private boolean launchEchoCancellerCalibration(boolean sendEcCalibrationResult) {
|
||||||
if (getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName()) == PackageManager.PERMISSION_GRANTED) {
|
if (getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName()) == PackageManager.PERMISSION_GRANTED) {
|
||||||
boolean needsEchoCalibration = LinphoneManager.getLc().needsEchoCalibration();
|
boolean needsEchoCalibration = LinphoneManager.getLc().needsEchoCalibration();
|
||||||
if (needsEchoCalibration && mPrefs.isFirstLaunch()) {
|
if (needsEchoCalibration && mPrefs.isFirstLaunch() && !echoCancellerAlreadyDone) {
|
||||||
EchoCancellerCalibrationFragment fragment = new EchoCancellerCalibrationFragment();
|
EchoCancellerCalibrationFragment fragment = new EchoCancellerCalibrationFragment();
|
||||||
fragment.enableEcCalibrationResultSending(sendEcCalibrationResult);
|
fragment.enableEcCalibrationResultSending(sendEcCalibrationResult);
|
||||||
changeFragment(fragment);
|
changeFragment(fragment);
|
||||||
currentFragment = AssistantFragmentsEnum.ECHO_CANCELLER_CALIBRATION;
|
currentFragment = AssistantFragmentsEnum.ECHO_CANCELLER_CALIBRATION;
|
||||||
back.setVisibility(View.VISIBLE);
|
back.setVisibility(View.VISIBLE);
|
||||||
cancel.setEnabled(false);
|
cancel.setEnabled(false);
|
||||||
|
echoCancellerAlreadyDone = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -29,6 +29,7 @@ import android.widget.Button;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import org.linphone.LinphoneActivity;
|
||||||
import org.linphone.LinphoneManager;
|
import org.linphone.LinphoneManager;
|
||||||
import org.linphone.R;
|
import org.linphone.R;
|
||||||
import org.linphone.core.LinphoneCoreFactory;
|
import org.linphone.core.LinphoneCoreFactory;
|
||||||
|
@ -41,23 +42,31 @@ import org.linphone.tools.OpenH264DownloadHelper;
|
||||||
* @author Erwan CROZE
|
* @author Erwan CROZE
|
||||||
*/
|
*/
|
||||||
public class CodecDownloaderFragment extends Fragment {
|
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
|
@Override
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
Bundle savedInstanceState) {
|
Bundle savedInstanceState) {
|
||||||
final View view = inflater.inflate(R.layout.assistant_codec_downloader, container, false);
|
final View view = inflater.inflate(R.layout.assistant_codec_downloader, container, false);
|
||||||
|
|
||||||
final TextView question = (TextView) view.findViewById(R.id.question);
|
question = (TextView) view.findViewById(R.id.question);
|
||||||
final TextView downloading = (TextView) view.findViewById(R.id.downloading);
|
downloading = (TextView) view.findViewById(R.id.downloading);
|
||||||
final TextView downloaded = (TextView) view.findViewById(R.id.downloaded);
|
downloaded = (TextView) view.findViewById(R.id.downloaded);
|
||||||
final Button yes = (Button) view.findViewById(R.id.answerYes);
|
yes = (Button) view.findViewById(R.id.answerYes);
|
||||||
final Button no = (Button) view.findViewById(R.id.answerNo);
|
no = (Button) view.findViewById(R.id.answerNo);
|
||||||
final Button ok = (Button) view.findViewById(R.id.answerOk);
|
ok = (Button) view.findViewById(R.id.answerOk);
|
||||||
final ProgressBar bar = (ProgressBar) view.findViewById(R.id.progressBar);
|
bar = (ProgressBar) view.findViewById(R.id.progressBar);
|
||||||
final TextView downloadingInfo = (TextView) view.findViewById(R.id.downloadingInfo);
|
downloadingInfo = (TextView) view.findViewById(R.id.downloadingInfo);
|
||||||
|
|
||||||
final OpenH264DownloadHelper codecDownloader = LinphoneCoreFactory.instance().createOpenH264DownloadHelper();
|
final OpenH264DownloadHelper codecDownloader = LinphoneManager.getInstance().getOpenH264DownloadHelper();
|
||||||
final OpenH264DownloadHelperListener codecListener = new OpenH264DownloadHelperListener() {
|
final OpenH264DownloadHelperListener codecListener = new OpenH264DownloadHelperListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -66,16 +75,16 @@ public class CodecDownloaderFragment extends Fragment {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if (current <= max) {
|
if (current <= max) {
|
||||||
|
hideAllItems();
|
||||||
downloadingInfo.setText(current + " / " + max);
|
downloadingInfo.setText(current + " / " + max);
|
||||||
downloadingInfo.setVisibility(View.VISIBLE);
|
downloadingInfo.setVisibility(View.VISIBLE);
|
||||||
|
downloading.setVisibility(View.VISIBLE);
|
||||||
bar.setMax(max);
|
bar.setMax(max);
|
||||||
bar.setProgress(current);
|
bar.setProgress(current);
|
||||||
bar.setVisibility(View.VISIBLE);
|
bar.setVisibility(View.VISIBLE);
|
||||||
} else {
|
} else {
|
||||||
downloadingInfo.setVisibility(View.INVISIBLE);
|
hideAllItems();
|
||||||
bar.setVisibility(View.INVISIBLE);
|
|
||||||
LinphoneManager.getLc().reloadMsPlugins(null);
|
LinphoneManager.getLc().reloadMsPlugins(null);
|
||||||
downloading.setVisibility(View.INVISIBLE);
|
|
||||||
downloaded.setVisibility(View.VISIBLE);
|
downloaded.setVisibility(View.VISIBLE);
|
||||||
enabledH264(true);
|
enabledH264(true);
|
||||||
AssistantActivity.instance().endDownloadCodec();
|
AssistantActivity.instance().endDownloadCodec();
|
||||||
|
@ -85,16 +94,11 @@ public class CodecDownloaderFragment extends Fragment {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void OnError (final String error){
|
public void OnError(final String error) {
|
||||||
mHandler.post(new Runnable() {
|
mHandler.post(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
question.setVisibility(View.INVISIBLE);
|
hideAllItems();
|
||||||
downloading.setVisibility(View.INVISIBLE);
|
|
||||||
yes.setVisibility(View.INVISIBLE);
|
|
||||||
no.setVisibility(View.INVISIBLE);
|
|
||||||
bar.setVisibility(View.INVISIBLE);
|
|
||||||
downloadingInfo.setVisibility(View.INVISIBLE);
|
|
||||||
downloaded.setText("Sorry an error has occurred.");
|
downloaded.setText("Sorry an error has occurred.");
|
||||||
downloaded.setVisibility(View.VISIBLE);
|
downloaded.setVisibility(View.VISIBLE);
|
||||||
ok.setVisibility(View.VISIBLE);
|
ok.setVisibility(View.VISIBLE);
|
||||||
|
@ -106,25 +110,15 @@ public class CodecDownloaderFragment extends Fragment {
|
||||||
};
|
};
|
||||||
|
|
||||||
codecDownloader.setOpenH264HelperListener(codecListener);
|
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() {
|
yes.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
question.setVisibility(View.INVISIBLE);
|
hideAllItems();
|
||||||
yes.setVisibility(View.INVISIBLE);
|
bar.setVisibility(View.VISIBLE);
|
||||||
no.setVisibility(View.INVISIBLE);
|
codecDownloader.downloadCodec();
|
||||||
downloading.setVisibility(View.VISIBLE);
|
}
|
||||||
ok.setVisibility(View.INVISIBLE);
|
});
|
||||||
bar.setVisibility(View.VISIBLE);
|
|
||||||
downloadingInfo.setVisibility(View.INVISIBLE);
|
|
||||||
codecDownloader.downloadCodec();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
no.setOnClickListener(new View.OnClickListener() {
|
no.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -133,10 +127,71 @@ public class CodecDownloaderFragment extends Fragment {
|
||||||
AssistantActivity.instance().endDownloadCodec();
|
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;
|
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) {
|
private void enabledH264(boolean enable) {
|
||||||
PayloadType h264 = null;
|
PayloadType h264 = null;
|
||||||
for (PayloadType pt : LinphoneManager.getLc().getVideoCodecs()) {
|
for (PayloadType pt : LinphoneManager.getLc().getVideoCodecs()) {
|
||||||
|
|
Loading…
Reference in a new issue