Android的/ Java的 - 删除连续加载动画延迟 [英] Android / Java - Removing Sequential Loading Animation Delay
问题描述
我有一个机器人动画,它加载了一系列连续的点(publishProgress),但是有一个10+秒的延时才开始,因为我让他们为我的AsyncTask的一部分,它加载一旦数据被处理(技术上 - 的两者要相关 - 但它在视觉上造成那里会有延迟)我怎么能叫这个动画上课的时候第一次启动呢?我需要删除该视觉动画延迟。
来源:
公共类UpdateActivity扩展活动实现OnClickListener {
私人TelephonyManager TM;
AlertDialog mConfirmAlert = NULL;
NetworkTask任务;
ImageView的图片,文字,
AlertDialog mErrorAlert = NULL;
公共静态的ArrayList<字符串> NameArr =新的ArrayList<字符串>();
公共静态的ArrayList<字符串> ValueArr =新的ArrayList<字符串>();
公共静态的ArrayList<字符串> nameArr =新的ArrayList<字符串>();
公共静态的ArrayList<字符串> ApnArr =新的ArrayList<字符串>();
公共静态的ArrayList<字符串> mmscArr =新的ArrayList<字符串>();
公共静态的ArrayList<字符串> mmsportArr =新的ArrayList<字符串>();
公共静态的ArrayList<字符串> mmsproxyArr =新的ArrayList<字符串>();
公共静态的ArrayList<字符串> portArr =新的ArrayList<字符串>();
公共静态的ArrayList<字符串> proxyArr =新的ArrayList<字符串>();
私人ImageView的mProgressImageview1;
私人ImageView的mProgressImageview2;
私人ImageView的mProgressImageview3;
私人ImageView的mProgressImageview4;
私人ImageView的mProgressImageview5;
私人按钮mUpdateButton = NULL;
私人按钮mAssistUpdateButton = NULL;
私人按钮mAssistInstrButton = NULL;
私人TextView的mReadAgainButton = NULL;
公共静态诠释计数;
公共AnimationDrawable mTextAnimation = NULL;
私人按钮assist_update_btn = NULL;
TextView的mUpdatetext;
公共静态的InputStream流= NULL;
INT版本;
公共静态的BigInteger ID1,ID2,mdN1,mdN2;
BigInteger的[]号,mdnId;
公共静态字符串ICCID,MDN;
私人诠释mInstructionNumber = 0;
公共静态字符串的车,结果;
私有静态最后弦乐LOG_TAG =DataSettings;
公共静态最后弦乐BASE_URL =https://apps.example.com/REST/phoneSettings;
公共静态XmlParserHandlerFinal处理程序;
公共静态INT TotalSteps = 8;
公众的FileInputStream FIS;
@覆盖
保护无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
//实例XML解析器类
处理器=新XmlParserHandlerFinal();
handler.setContext(this.getBaseContext());
TM =(TelephonyManager)getSystemService(TELEPHONY_SERVICE);
INT NETWORKTYPE = tm.getNetworkType();
INT phoneType = tm.getPhoneType();
版本= android.os.Build.VERSION.SDK_INT;
//获取MDN(MCC + MNC)SIM卡和ICCID的供应商(串行
SIM卡的//数)
//并检查为载体类型
getImpVariablesForQuery();
任务=新NetworkTask();
如果(phoneType == TelephonyManager.PHONE_TYPE_CDMA
|| (phoneType!= TelephonyManager.PHONE_TYPE_GSM
&功放;&安培; NETWORKTYPE!= TelephonyManager.NETWORK_TYPE_GPRS
&功放;&安培; NETWORKTYPE!= TelephonyManager.NETWORK_TYPE_EDGE
&功放;&安培; NETWORKTYPE!= TelephonyManager.NETWORK_TYPE_HSDPA
&功放;&安培; NETWORKTYPE!= TelephonyManager.NETWORK_TYPE_HSPA
&功放;&安培; NETWORKTYPE!= TelephonyManager.NETWORK_TYPE_HSPAP
&功放;&安培; NETWORKTYPE!= TelephonyManager.NETWORK_TYPE_HSUPA
&功放;&安培; NETWORKTYPE = TelephonyManager.NETWORK_TYPE_UMTS和放大器;!&安培; NETWORKTYPE!= TelephonyManager.NETWORK_TYPE_LTE)){
//如果手机类型为CDMA或
//电话手机类型不是GSM和网络类型是没有
//网络类型在声明中表示
//显示不兼容性消息
showAlert(的getString(R.string.incomp_sm_dialog));
//网络类型看,因为一些药片没有手机类型。
//我们依靠在这种情况下,网络类型
}否则,如果(!(tm.getSimState()== TelephonyManager.SIM_STATE_ABSENT
|| (tm.getSimOperator())
.equals(的getString(R.string.numeric_tmo))|| (TM
.getSimOperator())。等于(的getString(R.string.numeric_att)))){
//如果SIM卡是present,不是T-Mo或ATT网络SIM卡,
//显示错误信息提示,指示使用SM SIM卡
showAlert(的getString(R.string.insert_sm_dialog));
} //没有SIM卡或SIM卡与T-MO&放大器; ATT MNC MCC present
否则,如果((tm.getSimOperator())。等于(的getString(R.string.numeric_tmo))
|| (tm.getSimOperator())
.equals(的getString(R.string.numeric_att))){
//设备有T-Mo或ATT网络的SIM卡MCC和MNC正确
//人口
TotalSteps = 6;
的setContentView(R.layout.updating);
// AsyncTask的调用Web服务
任务=新NetworkTask();
task.execute();
}
}
公共无效的onClick(视图v){
如果(V == mUpdateButton){
//被选为版本比ICS更低更新按钮
onClickMethod(五);
意图I =新的意图(这一点,ConfigFinalActivity.class);
startActivity(ⅰ);
完();
} 其他
如果(v.getId()== R.id.assist_update_btn){
//被选为ICS及以上更新按钮
//获取协助更新UI TextView的
TextView的电视=(TextView中)findViewById(R.id.apn_app_text_cta2);
字符串文本=;
CharSequence中的StyledText =文本;
开关(mInstructionNumber){
情况下0:
//获得对应的指令串资源
//第二个指令集
文=的String.Format(的getString(R.string.apn_app_text_instr)
TotalSteps);
的StyledText = Html.fromHtml(文本);
//更新与正确的指令集的TextView的
tv.setText(的StyledText);
所以正确的指令//增量指令号
//串资源可以是检索下一时间的更新
//按钮是pressed
mInstructionNumber ++;
打破;
情况1:
文=的getString(R.string.apn_app_text_instr2);
的StyledText = Html.fromHtml(文本);
tv.setText(的StyledText);
所以正确的指令//增量指令号
//串资源可以是检索下一时间的更新
//按钮是pressed
mInstructionNumber ++;
打破;
案例2:
//决胜盘说明,更改为相应的布局
的setContentView(R.layout.assist_instructions);
字符串assistUpdateInstr =的String.Format(
的getString(R.string.apn_app_text_instr3),TotalSteps);
的StyledText = Html.fromHtml(assistUpdateInstr);
TextView的assistInstrText =(TextView中)findViewById(R.id.updated_text);
assistInstrText.setText(的StyledText);
mAssistInstrButton =(按钮)findViewById(R.id.assist_instr_btn);
mReadAgainButton =(TextView中)findViewById(R.id.read_again_btn);
mAssistInstrButton.setOnClickListener(本);
mReadAgainButton.setOnClickListener(本);
}
}否则,如果(V == mAssistInstrButton){
//LET'S做到这一点按钮,在最后指示屏幕ICS和
//中选择了
//创建ConfigActivity意向
意图I =新的意图(这一点,ConfigFinalActivity.class);
//调用ConfigActivity意图,开始协助更新
startActivity(ⅰ);
startActivity(新意图(Settings.ACTION_APN_SETTINGS));
}否则,如果(V == mReadAgainButton){
//返回指令1套,如果选择再次读取
mInstructionNumber = 0;
的setContentView(R.layout.assist_update);
字符串assistUpdate =的getString(R.string.apn_app_text_cta2);
CharSequence中的StyledText = Html.fromHtml(assistUpdate);
TextView的assistText =(TextView中)findViewById(R.id.apn_app_text_cta2);
assistText.setText(的StyledText);
mAssistUpdateButton =(按钮)findViewById(R.id.assist_update_btn);
mAssistUpdateButton.setOnClickListener(本);
}
}
公共无效onClickMethod(视图v){
mUpdateButton =(按钮)findViewById(R.drawable.btn_update_active_hdpi);
}
私人无效showAlert(字符串消息){
AlertDialog.Builder建设者=新AlertDialog.Builder(本);
builder.setMessage(消息).setPositiveButton(OK,
新DialogInterface.OnClickListener(){
公共无效的onClick(DialogInterface对话框,INT ID){
UpdateActivity.this.finish();
}
});
mConfirmAlert = builder.create();
mConfirmAlert.show();
}
私人无效getImpVariablesForQuery(){
长D = 1234;
BigInteger的除数= BigInteger.valueOf(D);
//获取MDN
// MDN = tm.getLine1Number();
MDN =3055861092;
如果(MDN.equals()){
mdN1 = NULL;
mdN2 = NULL;
} 其他 {
Log.d(MDN,MDN);
BigInteger的宾特=新的BigInteger(MDN);
mdnId = bInt.divideAndRemainder(除数);
//检索SIM卡的ICCID数
mdN1 = mdnId [1];
的System.out.println(MDN%1234 =+ mdN1);
mdN2 = mdnId [0];
的System.out.println(MDN / 1234 =+ mdN2);
}
ICCID = tm.getSimSerialNumber();
如果(ICCID.equals()){
ID1 = NULL;
ID2 = NULL;
} 其他 {
Log.d(ICCID,ICCID);
BigInteger的bInteger =新的BigInteger(ICCID);
ID = bInteger.divideAndRemainder(除数);
ID1 = ID [1];
的System.out.println(ICCID%1234 =+ ID1);
ID2 = ID [0];
的System.out.println(ICCID / 1234 =+ ID2);
}
//检查为载体类型
如果((tm.getSimOperator())。等于(的getString(R.string.numeric_tmo))){
轿车=TMO;
}否则,如果((tm.getSimOperator())
.equals(的getString(R.string.numeric_att))){
轿车=ATT;
}
}
//方法来保存从解析器的ArrayList
公共静态无效setArrayList(){
nameArr = handler.getnameArr();
ApnArr = handler.getApnArr();
mmscArr = handler.getMMSCArr();
mmsproxyArr = handler.getMmscProxyArr();
mmsportArr = handler.getMmsPortArr();
proxyArr = handler.getProxyArr();
portArr = handler.getPortArr();
数= handler.getCount();
结果= handler.getResult();
}
公众的ArrayList<字符串> getnameArr(){
返回nameArr;
}
公众的ArrayList<字符串> getApnArr(){
返回ApnArr;
}
公众的ArrayList<字符串> getMMSCArr(){
返回mmscArr;
}
公众的ArrayList<字符串> getMmscProxyArr(){
返回mmsproxyArr;
}
公众的ArrayList<字符串> getMmsPortArr(){
返回mmsportArr;
}
公众诠释getCount将(){
返回计数;
}
公众的ArrayList<字符串> getProxyArr(){
返回proxyArr;
}
公众的ArrayList<字符串> getPortArr(){
返回portArr;
}
// AsyncTask的调用Web服务
公共类NetworkTask扩展的AsyncTask<字符串,整数,为InputStream> {
@覆盖
在preExecute保护无效(){
super.on preExecute();
//
}
@覆盖
受保护的InputStream doInBackground(字符串... PARAMS){
INT结果为0;
{
Log.i(网址...,BASE_URL);
尝试 {
流= getQueryResults(BASE_URL);
}赶上(SocketTimeoutException如果E1){
// TODO自动生成的catch块
e1.printStackTrace();
}赶上(异常SSLException E1){
// TODO自动生成的catch块
e1.printStackTrace();
}赶上(IOException异常E1){
// TODO自动生成的catch块
e1.printStackTrace();
}赶上(的SAXException E1){
// TODO自动生成的catch块
e1.printStackTrace();
}赶上(例外E1){
// TODO自动生成的catch块
e1.printStackTrace();
}
//将code以下起着ST促销动画
显示更新成功或失败消息//之前
为(中间体增量= 0;增量2;增量++){
//睡眠1/2秒
//调用UI改变更新文字显示1点
//并增加水平,减少限幅的量
// 和
//慢慢揭示的手图像
publishProgress(R.drawable.loading_full,
R.drawable.loading_empty,R.drawable.loading_empty,
R.drawable.loading_empty,R.drawable.loading_empty);
尝试 {
视频下载(500);
}赶上(InterruptedException异常E){
// TODO自动生成的catch块
}
publishProgress(R.drawable.loading_full,
R.drawable.loading_full,R.drawable.loading_empty,
R.drawable.loading_empty,R.drawable.loading_empty);
尝试 {
视频下载(500);
}赶上(InterruptedException异常E){
// TODO自动生成的catch块
}
publishProgress(R.drawable.loading_full,
R.drawable.loading_full,R.drawable.loading_full,
R.drawable.loading_empty,R.drawable.loading_empty);
尝试 {
视频下载(500);
}赶上(InterruptedException异常E){
// TODO自动生成的catch块
}
publishProgress(R.drawable.loading_full,
R.drawable.loading_full,R.drawable.loading_full,
R.drawable.loading_full,R.drawable.loading_empty);
尝试 {
视频下载(500);
}赶上(InterruptedException异常E){
// TODO自动生成的catch块
}
publishProgress(R.drawable.loading_full,
R.drawable.loading_full,R.drawable.loading_full,
R.drawable.loading_full,R.drawable.loading_full);
//睡眠1/2秒
尝试 {
视频下载(500);
}赶上(InterruptedException异常E){
// TODO自动生成的catch块
}
}
返回流;
}
}
/ *
*将查询发送到服务器和回来的分析结果捆绑
* urlQueryString - URL调用web服务
* /
保护同步的InputStream getQueryResults(字符串urlQueryString)
抛出IOException异常,SAXException中,异常SSLException,
SocketTimeoutException如果,异常{
尝试 {
// HttpsURLConnection HTTPS = NULL;
字符串的uri = urlQueryString;
名单<的NameValuePair> namevaluepairs中=新的ArrayList<的NameValuePair>();
BasicNameValuePair mdn1,mdn2,ID1,ID2;
如果(MDN.equals()){
mdn1 =新BasicNameValuePair(mdn1,NULL);
mdn2 =新BasicNameValuePair(mdn2,NULL);
} 其他 {
mdn1 =新BasicNameValuePair(mdn1,mdN1.toString());
mdn2 =新BasicNameValuePair(mdn2,mdN2.toString());
}
BasicNameValuePair车=新BasicNameValuePair(汽车,汽车);
如果(ICCID.equals()){
ID1 =新BasicNameValuePair(ID1,NULL);
ID2 =新BasicNameValuePair(ID2,NULL);
} 其他 {
ID1 =新BasicNameValuePair(ID1,
iD1.toString());
ID2 =新BasicNameValuePair(ID2
iD2.toString());
}
nameValuePairs.add(mdn1);
nameValuePairs.add(mdn2);
nameValuePairs.add(车);
nameValuePairs.add(ID1);
nameValuePairs.add(ID2);
UrlEn codedFormEntity urlEn codedFormEntity =新UrlEn codedFormEntity(
namevaluepairs中,ISO-8859-1);
密钥库的trustStore = KeyStore.getInstance(密钥库
.getDefaultType());
trustStore.load(NULL,NULL);
SSLSocketFactory的SF =新MySSLSocketFactory(的trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
的HttpParams PARAMS =新BasicHttpParams();
HttpProtocolParams.setVersion(参数,可以HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(参数,可以HTTP.UTF_8);
SchemeRegistry注册表=新SchemeRegistry();
registry.register(新计划(HTTP,PlainSocketFactory
.getSocketFactory(),80));
registry.register(新计划(https开头,SF,443));
ClientConnectionManager CCM =新ThreadSafeClientConnManager(
参数,可以登记);
HttpClient的HttpClient的=新DefaultHttpClient(CCM,则params);
PARAMS = httpClient.getParams();
HttpClientParams.setRedirecting(参数,可以真正的);
HttpPost httpPost =新HttpPost(URI);
httpPost.addHeader(授权,
getB64Auth(nmundru,ABC123));
httpPost.setHeader(内容类型,text / plain的;字符集= UTF-8);
Log.v(httpPost,httpPost.toString());
httpPost.setEntity(urlEn codedFormEntity);
HTT presponse HTT presponse = httpClient.execute(httpPost);
的System.out.println(回应......+ HTT presponse.toString());
Log.v(回应......,HTT presponse.toString());
流= HTT presponse.getEntity()的getContent()。
//保存的InputStream在一个文件中
尝试 {
FileOutputStream中FOUT = openFileOutput(settings.xml中,
Context.MODE_WORLD_READABLE);
在的DataInputStream =新的DataInputStream(流);
的BufferedReader BR =新的BufferedReader(
新的InputStreamReader(在));
字符串strLine中;
而((strLine中= br.readLine())!= NULL){
的System.out.println(strLine中); //打印响应
//在logcat的
fOut.write(strLine.getBytes());
}
fOut.close();
}赶上(FileNotFoundException异常E){
e.printStackTrace();
}赶上(IOException异常E){
e.printStackTrace();
}
FIS = openFileInput(的settings.xml);
}赶上(例外五){
Log.e(LOG_TAG,e.toString());
// 再试一次();
} 最后 {
// https.disconnect();
}
返回流;
}
私人字符串getB64Auth(字符串登录,字符串传递){
字符串源=登录+:+通过;
字符串RET =基本法
+ Base64.en codeToString(source.getBytes(),Base64.URL_SAFE
| Base64.NO_WRAP);
返回RET;
}
@覆盖
保护无效onPostExecute(InputStream的流){
super.onPostExecute(流);
//这种方法被称为解析响应并保存
//的ArrayList
成功();
}
公共无效成功(){
//解析响应
尝试 {
handler.getQueryResponse(FIS);
}赶上(的SAXException E){
// TODO自动生成的catch块
e.printStackTrace();
}赶上(IOException异常E){
// TODO自动生成的catch块
e.printStackTrace();
}
//一套方法来保存ArryaLists从解析器
setArrayList();
意图I =新的意图(UpdateActivity.this,ConfigFinalActivity.class);
startActivity(ⅰ);
完();
}
//对应publishProgress呼叫框架UI线程的方法
//工作者线程
保护无效onProgressUpdate(整数...进度){
//调用函数来更新图像视图
setProgressImgView(进展[0],进步[1],进步[2]
进展[3],进展[4]);
}
}
私人无效setProgressImgView(整数imgViewId1,整数imgViewId2,
整数imgViewId3,整数imgViewId4,整数imgViewId5){
与更新点//更新图像视图
//重置视图布局的情况下,定向,同时更新
的setContentView(R.layout.updating);
mProgressImageview1 =(ImageView的)findViewById(R.id.loading_empty1);
mProgressImageview2 =(ImageView的)findViewById(R.id.loading_empty2);
mProgressImageview3 =(ImageView的)findViewById(R.id.loading_empty3);
mProgressImageview4 =(ImageView的)findViewById(R.id.loading_empty4);
mProgressImageview5 =(ImageView的)findViewById(R.id.loading_empty5);
mProgressImageview1.setImageResource(imgViewId1);
mProgressImageview2.setImageResource(imgViewId2);
mProgressImageview3.setImageResource(imgViewId3);
mProgressImageview4.setImageResource(imgViewId4);
mProgressImageview5.setImageResource(imgViewId5);
}
@覆盖
保护无效onRestart(){
super.onRestart();
如果(mErrorAlert!= NULL)
mErrorAlert.dismiss();
}
公共无效TRYAGAIN(){
//显示最终布局的pre-ICS自动设置失败后
//更新
的setContentView(R.layout.tryagain);
字符串tryAgainText =;
CharSequence的styledTryAgainText;
tryAgainText =的String.Format(的getString(R.string.tryagain_text1)
TotalSteps);
styledTryAgainText = Html.fromHtml(tryAgainText);
TextView的tryAgain1 =(TextView中)findViewById(R.id.tryagain_text1);
tryAgain1.setText(styledTryAgainText);
tryAgainText =的String.Format(的getString(R.string.tryagain_text2)
TotalSteps);
styledTryAgainText = Html.fromHtml(tryAgainText);
TextView的tryAgain2 =(TextView中)findViewById(R.id.tryagain_text2);
tryAgain2.setText(styledTryAgainText);
tryAgainText =的String.Format(的getString(R.string.tryagain_text3)
TotalSteps);
styledTryAgainText = Html.fromHtml(tryAgainText);
TextView的tryAgain3 =(TextView中)findViewById(R.id.tryagain_text3);
tryAgain3.setText(styledTryAgainText);
}
私人无效assistUpdate(){
//显示pre-ICS自动设置更新后的最终布局
的setContentView(R.layout.assist_update);
assist_update_btn =(按钮)findViewById(R.id.assist_update_btn);
assist_update_btn.setOnClickListener((OnClickListener)本);
}
公共无效成功(){
//解析响应
尝试 {
handler.getQueryResponse(FIS);
}赶上(的SAXException E){
// TODO自动生成的catch块
e.printStackTrace();
}赶上(IOException异常E){
// TODO自动生成的catch块
e.printStackTrace();
}
//一套方法来保存ArryaLists从解析器
setArrayList();
意图I =新的意图(这一点,ConfigFinalActivity.class);
startActivity(ⅰ);
完();
}
公共字符串的getResult(){
返回结果;
}
}
您可以使用preExecute()和onPostExecute()从AsyncTask的方法之前设置的加载/删除它的工作完成之后。
尝试:
在preExecute保护无效(){
setProgressImgView(R.drawable.loading_full,
R.drawable.loading_empty,R.drawable.loading_empty,
R.drawable.loading_empty,R.drawable.loading_empty);
}
保护无效onPostExecute(InputStream的流){
setProgressImgView(R.drawable.loading_full,
R.drawable.loading_full,R.drawable.loading_full,
R.drawable.loading_full,R.drawable.loading_full);
//这种方法被称为解析响应并保存
//的ArrayList
成功();
}
I have an android Animation which loads a series of sequential dots (publishProgress) however there is a 10+ second delay before they start because I have them as a part of my AsyncTask which loads once the data is processing (technically - the two should be related - but it visually causes there to be a delay) how can I call this animation when the class first starts instead? I need to remove this visual animation delay.
SOURCE:
public class UpdateActivity extends Activity implements OnClickListener {
private TelephonyManager tm;
AlertDialog mConfirmAlert = null;
NetworkTask task;
ImageView image, text;
AlertDialog mErrorAlert = null;
public static ArrayList<String> NameArr = new ArrayList<String>();
public static ArrayList<String> ValueArr = new ArrayList<String>();
public static ArrayList<String> nameArr = new ArrayList<String>();
public static ArrayList<String> ApnArr = new ArrayList<String>();
public static ArrayList<String> mmscArr = new ArrayList<String>();
public static ArrayList<String> mmsportArr = new ArrayList<String>();
public static ArrayList<String> mmsproxyArr = new ArrayList<String>();
public static ArrayList<String> portArr = new ArrayList<String>();
public static ArrayList<String> proxyArr = new ArrayList<String>();
private ImageView mProgressImageview1;
private ImageView mProgressImageview2;
private ImageView mProgressImageview3;
private ImageView mProgressImageview4;
private ImageView mProgressImageview5;
private Button mUpdateButton = null;
private Button mAssistUpdateButton = null;
private Button mAssistInstrButton = null;
private TextView mReadAgainButton = null;
public static int count;
public AnimationDrawable mTextAnimation = null;
private Button assist_update_btn = null;
TextView mUpdatetext;
public static InputStream stream = null;
int version;
public static BigInteger iD1, iD2, mdN1, mdN2;
BigInteger[] id, mdnId;
public static String ICCID, MDN;
private int mInstructionNumber = 0;
public static String caR, result;
private static final String LOG_TAG = "DataSettings";
public static final String Base_URL = "https://apps.example.com/REST/phoneSettings";
public static XmlParserHandlerFinal handler;
public static int TotalSteps = 8;
public FileInputStream fis;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// instance for xml parser class
handler = new XmlParserHandlerFinal();
handler.setContext(this.getBaseContext());
tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
int networkType = tm.getNetworkType();
int phoneType = tm.getPhoneType();
version = android.os.Build.VERSION.SDK_INT;
// to get MDN(MCC+MNC) of the provider of the SIM and ICCID (Serial
// number of the SIM)
// and to check for the Carrier type
getImpVariablesForQuery();
task = new NetworkTask();
if (phoneType == TelephonyManager.PHONE_TYPE_CDMA
|| (phoneType != TelephonyManager.PHONE_TYPE_GSM
&& networkType != TelephonyManager.NETWORK_TYPE_GPRS
&& networkType != TelephonyManager.NETWORK_TYPE_EDGE
&& networkType != TelephonyManager.NETWORK_TYPE_HSDPA
&& networkType != TelephonyManager.NETWORK_TYPE_HSPA
&& networkType != TelephonyManager.NETWORK_TYPE_HSPAP
&& networkType != TelephonyManager.NETWORK_TYPE_HSUPA
&& networkType != TelephonyManager.NETWORK_TYPE_UMTS && networkType != TelephonyManager.NETWORK_TYPE_LTE)) {
// If the phone type is CDMA or
// the phone phone type is not GSM and the network type is none of
// the network types indicated in the statement
// Display incompatibility message
showAlert(getString(R.string.incomp_sm_dialog));
// Network type is looked because some tablets have no phone type.
// We rely on network type in such cases
} else if (!(tm.getSimState() == TelephonyManager.SIM_STATE_ABSENT
|| (tm.getSimOperator())
.equals(getString(R.string.numeric_tmo)) || (tm
.getSimOperator()).equals(getString(R.string.numeric_att)))) {
// if SIM is present and is NOT a T-Mo or ATT network SIM,
// display Error message alert indicating to use SM SIM
showAlert(getString(R.string.insert_sm_dialog));
}// No SIM or SIM with T-Mo & ATT MNC MCC present
else if ((tm.getSimOperator()).equals(getString(R.string.numeric_tmo))
|| (tm.getSimOperator())
.equals(getString(R.string.numeric_att))) {
// Device has T-Mo or ATT network SIM card MCC and MNC correctly
// populated
TotalSteps = 6;
setContentView(R.layout.updating);
// AsyncTask to call the web service
task = new NetworkTask();
task.execute("");
}
}
public void onClick(View v) {
if (v == mUpdateButton) {
// Update button for versions lower than ICS is selected
onClickMethod(v);
Intent i = new Intent(this, ConfigFinalActivity.class);
startActivity(i);
finish();
} else
if (v.getId() == R.id.assist_update_btn) {
// Update button for ICS and up is selected
// Get the TextView in the Assist Update UI
TextView tv = (TextView) findViewById(R.id.apn_app_text_cta2);
String text = "";
CharSequence styledText = text;
switch (mInstructionNumber) {
case 0:
// Retrieve the instruction string resource corresponding the
// 2nd set of instructions
text = String.format(getString(R.string.apn_app_text_instr),
TotalSteps);
styledText = Html.fromHtml(text);
// Update the TextView with the correct set of instructions
tv.setText(styledText);
// Increment instruction number so the correct instructions
// string resource can be retrieve the next time the update
// button is pressed
mInstructionNumber++;
break;
case 1:
text = getString(R.string.apn_app_text_instr2);
styledText = Html.fromHtml(text);
tv.setText(styledText);
// Increment instruction number so the correct instructions
// string resource can be retrieve the next time the update
// button is pressed
mInstructionNumber++;
break;
case 2:
// Final set of instructions-Change to the corresponding layout
setContentView(R.layout.assist_instructions);
String assistUpdateInstr = String.format(
getString(R.string.apn_app_text_instr3), TotalSteps);
styledText = Html.fromHtml(assistUpdateInstr);
TextView assistInstrText = (TextView) findViewById(R.id.updated_text);
assistInstrText.setText(styledText);
mAssistInstrButton = (Button) findViewById(R.id.assist_instr_btn);
mReadAgainButton = (TextView) findViewById(R.id.read_again_btn);
mAssistInstrButton.setOnClickListener(this);
mReadAgainButton.setOnClickListener(this);
}
} else if (v == mAssistInstrButton) {
// "LET'S DO THIS" Button in final instructions screen for ICS and
// up is selected
// Create ConfigActivity Intent
Intent i = new Intent(this, ConfigFinalActivity.class);
// Invoke ConfigActivity Intent to start the assisted update
startActivity(i);
startActivity(new Intent(Settings.ACTION_APN_SETTINGS));
} else if (v == mReadAgainButton) {
// go back to 1st set of instructions if read again is selected
mInstructionNumber = 0;
setContentView(R.layout.assist_update);
String assistUpdate = getString(R.string.apn_app_text_cta2);
CharSequence styledText = Html.fromHtml(assistUpdate);
TextView assistText = (TextView) findViewById(R.id.apn_app_text_cta2);
assistText.setText(styledText);
mAssistUpdateButton = (Button) findViewById(R.id.assist_update_btn);
mAssistUpdateButton.setOnClickListener(this);
}
}
public void onClickMethod(View v) {
mUpdateButton = (Button) findViewById(R.drawable.btn_update_active_hdpi);
}
private void showAlert(String message) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(message).setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
UpdateActivity.this.finish();
}
});
mConfirmAlert = builder.create();
mConfirmAlert.show();
}
private void getImpVariablesForQuery() {
long d = 1234;
BigInteger divisor = BigInteger.valueOf(d);
// to get MDN
// MDN = tm.getLine1Number();
MDN = "3055861092";
if (MDN.equals("")) {
mdN1 = null;
mdN2 = null;
} else {
Log.d("MDN", MDN);
BigInteger bInt = new BigInteger(MDN);
mdnId = bInt.divideAndRemainder(divisor);
// to retrieve ICCID number of the SIM
mdN1 = mdnId[1];
System.out.println("MDN%1234 = " + mdN1);
mdN2 = mdnId[0];
System.out.println("MDN/1234 = " + mdN2);
}
ICCID = tm.getSimSerialNumber();
if (ICCID.equals("")) {
iD1 = null;
iD2 = null;
} else {
Log.d("ICCID", ICCID);
BigInteger bInteger = new BigInteger(ICCID);
id = bInteger.divideAndRemainder(divisor);
iD1 = id[1];
System.out.println("ICCID%1234 = " + iD1);
iD2 = id[0];
System.out.println("ICCID/1234 = " + iD2);
}
// Check for the Carrier Type
if ((tm.getSimOperator()).equals(getString(R.string.numeric_tmo))) {
caR = "TMO";
} else if ((tm.getSimOperator())
.equals(getString(R.string.numeric_att))) {
caR = "ATT";
}
}
// method to save the ArrayLists from parser
public static void setArrayList() {
nameArr = handler.getnameArr();
ApnArr = handler.getApnArr();
mmscArr = handler.getMMSCArr();
mmsproxyArr = handler.getMmscProxyArr();
mmsportArr = handler.getMmsPortArr();
proxyArr = handler.getProxyArr();
portArr = handler.getPortArr();
count = handler.getCount();
result = handler.getResult();
}
public ArrayList<String> getnameArr() {
return nameArr;
}
public ArrayList<String> getApnArr() {
return ApnArr;
}
public ArrayList<String> getMMSCArr() {
return mmscArr;
}
public ArrayList<String> getMmscProxyArr() {
return mmsproxyArr;
}
public ArrayList<String> getMmsPortArr() {
return mmsportArr;
}
public int getCount() {
return count;
}
public ArrayList<String> getProxyArr() {
return proxyArr;
}
public ArrayList<String> getPortArr() {
return portArr;
}
// AsyncTask to call web service
public class NetworkTask extends AsyncTask<String, Integer, InputStream> {
@Override
protected void onPreExecute() {
super.onPreExecute();
//
}
@Override
protected InputStream doInBackground(String... params) {
int result = 0;
{
Log.i("url...", Base_URL);
try {
stream = getQueryResults(Base_URL);
} catch (SocketTimeoutException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (SSLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (SAXException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// The code below plays a ST Promo animation
// prior to displaying update success or failure message
for (int incr = 0; incr < 2; incr++) {
// Sleep for 1/2 second
// Invoke UI to change updating text to show 1 dot
// And Increasing the level to reduce the amount of clipping
// and
// slowly reveals the hand image
publishProgress(R.drawable.loading_full,
R.drawable.loading_empty, R.drawable.loading_empty,
R.drawable.loading_empty, R.drawable.loading_empty);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
}
publishProgress(R.drawable.loading_full,
R.drawable.loading_full, R.drawable.loading_empty,
R.drawable.loading_empty, R.drawable.loading_empty);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
}
publishProgress(R.drawable.loading_full,
R.drawable.loading_full, R.drawable.loading_full,
R.drawable.loading_empty, R.drawable.loading_empty);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
}
publishProgress(R.drawable.loading_full,
R.drawable.loading_full, R.drawable.loading_full,
R.drawable.loading_full, R.drawable.loading_empty);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
}
publishProgress(R.drawable.loading_full,
R.drawable.loading_full, R.drawable.loading_full,
R.drawable.loading_full, R.drawable.loading_full);
// Sleep for 1/2 second
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
}
}
return stream;
}
}
/*
* Sends a query to server and gets back the parsed results in a bundle
* urlQueryString - URL for calling the webservice
*/
protected synchronized InputStream getQueryResults(String urlQueryString)
throws IOException, SAXException, SSLException,
SocketTimeoutException, Exception {
try {
// HttpsURLConnection https = null;
String uri = urlQueryString;
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
BasicNameValuePair mdn1, mdn2,id1,id2;
if (MDN.equals("")) {
mdn1 = new BasicNameValuePair("mdn1", null);
mdn2 = new BasicNameValuePair("mdn2", null);
} else {
mdn1 = new BasicNameValuePair("mdn1", mdN1.toString());
mdn2 = new BasicNameValuePair("mdn2", mdN2.toString());
}
BasicNameValuePair car = new BasicNameValuePair("car", caR);
if (ICCID.equals("")) {
id1 = new BasicNameValuePair("id1", null);
id2 = new BasicNameValuePair("id2", null);
} else {
id1 = new BasicNameValuePair("id1",
iD1.toString());
id2 = new BasicNameValuePair("id2",
iD2.toString());
}
nameValuePairs.add(mdn1);
nameValuePairs.add(mdn2);
nameValuePairs.add(car);
nameValuePairs.add(id1);
nameValuePairs.add(id2);
UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(
nameValuePairs, "ISO-8859-1");
KeyStore trustStore = KeyStore.getInstance(KeyStore
.getDefaultType());
trustStore.load(null, null);
SSLSocketFactory sf = new MySSLSocketFactory(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("http", PlainSocketFactory
.getSocketFactory(), 80));
registry.register(new Scheme("https", sf, 443));
ClientConnectionManager ccm = new ThreadSafeClientConnManager(
params, registry);
HttpClient httpClient = new DefaultHttpClient(ccm, params);
params = httpClient.getParams();
HttpClientParams.setRedirecting(params, true);
HttpPost httpPost = new HttpPost(uri);
httpPost.addHeader("Authorization",
getB64Auth("nmundru", "abc123"));
httpPost.setHeader("Content-Type", "text/plain; charset=utf-8");
Log.v("httpPost", httpPost.toString());
httpPost.setEntity(urlEncodedFormEntity);
HttpResponse httpResponse = httpClient.execute(httpPost);
System.out.println("response...." + httpResponse.toString());
Log.v("response...", httpResponse.toString());
stream = httpResponse.getEntity().getContent();
// save the InputStream in a file
try {
FileOutputStream fOut = openFileOutput("settings.xml",
Context.MODE_WORLD_READABLE);
DataInputStream in = new DataInputStream(stream);
BufferedReader br = new BufferedReader(
new InputStreamReader(in));
String strLine;
while ((strLine = br.readLine()) != null) {
System.out.println(strLine); //to print the response
// in logcat
fOut.write(strLine.getBytes());
}
fOut.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
fis = openFileInput("settings.xml");
} catch (Exception e) {
Log.e(LOG_TAG, e.toString());
// tryagain();
} finally {
// https.disconnect();
}
return stream;
}
private String getB64Auth(String login, String pass) {
String source = login + ":" + pass;
String ret = "Basic "
+ Base64.encodeToString(source.getBytes(), Base64.URL_SAFE
| Base64.NO_WRAP);
return ret;
}
@Override
protected void onPostExecute(InputStream stream) {
super.onPostExecute(stream);
// This method is called to parse the response and save the
// ArrayLists
success();
}
public void success() {
// to parse the response
try {
handler.getQueryResponse(fis);
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// set method to save the ArryaLists from the parser
setArrayList();
Intent i = new Intent(UpdateActivity.this, ConfigFinalActivity.class);
startActivity(i);
finish();
}
// Framework UI thread method corresponding to publishProgress call in
// worker thread
protected void onProgressUpdate(Integer... progress) {
// Call function to update image view
setProgressImgView(progress[0], progress[1], progress[2],
progress[3], progress[4]);
}
}
private void setProgressImgView(Integer imgViewId1, Integer imgViewId2,
Integer imgViewId3, Integer imgViewId4, Integer imgViewId5) {
// update image view with the updating dots
// Reset view layout in case orientation while updating
setContentView(R.layout.updating);
mProgressImageview1 = (ImageView) findViewById(R.id.loading_empty1);
mProgressImageview2 = (ImageView) findViewById(R.id.loading_empty2);
mProgressImageview3 = (ImageView) findViewById(R.id.loading_empty3);
mProgressImageview4 = (ImageView) findViewById(R.id.loading_empty4);
mProgressImageview5 = (ImageView) findViewById(R.id.loading_empty5);
mProgressImageview1.setImageResource(imgViewId1);
mProgressImageview2.setImageResource(imgViewId2);
mProgressImageview3.setImageResource(imgViewId3);
mProgressImageview4.setImageResource(imgViewId4);
mProgressImageview5.setImageResource(imgViewId5);
}
@Override
protected void onRestart() {
super.onRestart();
if (mErrorAlert != null)
mErrorAlert.dismiss();
}
public void tryagain() {
// Displaying final layout after failure of pre-ICS automatic settings
// update
setContentView(R.layout.tryagain);
String tryAgainText = "";
CharSequence styledTryAgainText;
tryAgainText = String.format(getString(R.string.tryagain_text1),
TotalSteps);
styledTryAgainText = Html.fromHtml(tryAgainText);
TextView tryAgain1 = (TextView) findViewById(R.id.tryagain_text1);
tryAgain1.setText(styledTryAgainText);
tryAgainText = String.format(getString(R.string.tryagain_text2),
TotalSteps);
styledTryAgainText = Html.fromHtml(tryAgainText);
TextView tryAgain2 = (TextView) findViewById(R.id.tryagain_text2);
tryAgain2.setText(styledTryAgainText);
tryAgainText = String.format(getString(R.string.tryagain_text3),
TotalSteps);
styledTryAgainText = Html.fromHtml(tryAgainText);
TextView tryAgain3 = (TextView) findViewById(R.id.tryagain_text3);
tryAgain3.setText(styledTryAgainText);
}
private void assistUpdate() {
// Displaying final layout after pre-ICS automatic settings update
setContentView(R.layout.assist_update);
assist_update_btn = (Button) findViewById(R.id.assist_update_btn);
assist_update_btn.setOnClickListener((OnClickListener) this);
}
public void success() {
// to parse the response
try {
handler.getQueryResponse(fis);
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// set method to save the ArryaLists from the parser
setArrayList();
Intent i = new Intent(this, ConfigFinalActivity.class);
startActivity(i);
finish();
}
public String getResult() {
return result;
}
}
You can use onPreExecute() and onPostExecute() methods from the AsyncTask to set the loading before/ remove it after the work is done.
try:
protected void onPreExecute() {
setProgressImgView(R.drawable.loading_full,
R.drawable.loading_empty, R.drawable.loading_empty,
R.drawable.loading_empty, R.drawable.loading_empty);
}
protected void onPostExecute(InputStream stream) {
setProgressImgView(R.drawable.loading_full,
R.drawable.loading_full, R.drawable.loading_full,
R.drawable.loading_full, R.drawable.loading_full);
// This method is called to parse the response and save the
// ArrayLists
success();
}
这篇关于Android的/ Java的 - 删除连续加载动画延迟的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!