com.insthub.O2OMobile.Activity.C1_PublishOrderActivity.java Source code

Java tutorial

Introduction

Here is the source code for com.insthub.O2OMobile.Activity.C1_PublishOrderActivity.java

Source

//
//       _/_/_/                      _/            _/_/_/_/_/
//    _/          _/_/      _/_/    _/  _/              _/      _/_/      _/_/
//   _/  _/_/  _/_/_/_/  _/_/_/_/  _/_/              _/      _/    _/  _/    _/
//  _/    _/  _/        _/        _/  _/          _/        _/    _/  _/    _/
//   _/_/_/    _/_/_/    _/_/_/  _/    _/      _/_/_/_/_/    _/_/      _/_/
//
//
//  Copyright (c) 2015-2016, Geek Zoo Studio
//  http://www.geek-zoo.com
//
//
//  Permission is hereby granted, free of charge, to any person obtaining a
//  copy of this software and associated documentation files (the "Software"),
//  to deal in the Software without restriction, including without limitation
//  the rights to use, copy, modify, merge, publish, distribute, sublicense,
//  and/or sell copies of the Software, and to permit persons to whom the
//  Software is furnished to do so, subject to the following conditions:
//
//  The above copyright notice and this permission notice shall be included in
//  all copies or substantial portions of the Software.
//
//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
//  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
//  IN THE SOFTWARE.
//

package com.insthub.O2OMobile.Activity;

import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

import android.content.SharedPreferences;

import com.insthub.O2OMobile.O2OMobileAppConst;
import com.insthub.O2OMobile.Protocol.*;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.drawable.AnimationDrawable;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.Editable;
import android.text.Selection;
import android.text.Spannable;
import android.text.TextWatcher;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.BeeFramework.Utils.AnimationUtil;
import com.BeeFramework.activity.BaseActivity;
import com.BeeFramework.model.BusinessResponse;
import com.BeeFramework.view.ToastView;
import com.external.androidquery.callback.AjaxStatus;
import com.external.timepicker.ScreenInfo;
import com.external.timepicker.WheelMain;
import com.insthub.O2OMobile.R;
import com.insthub.O2OMobile.Adapter.C1_PublishOrderAdapter;
import com.insthub.O2OMobile.Model.HomeModel;
import com.insthub.O2OMobile.Model.LocationInfoModel;
import com.insthub.O2OMobile.Model.OrderPublishModel;

public class C1_PublishOrderActivity extends BaseActivity implements BusinessResponse {

    private int MAX_TIME = 30;
    private FrameLayout mServiceTypeView;
    private ListView mServiceTypeListview;
    private ImageView mBack;
    private TextView mTitle;
    private LinearLayout mTitleView;
    private ImageView mArrowImage;
    private ImageView mClose;
    private EditText mPrice;
    private TextView mTime;
    private EditText mLocation;
    private EditText mText;
    private Button mVoice;
    private Button mVoicePlay;
    private ImageView mVoiceReset;
    private Button mPublish;
    private FrameLayout mVoiceView;
    private ImageView mVoiceAnim;
    private WheelMain mWheelMain;
    private SimpleDateFormat mFormat;

    private AnimationDrawable mAnimationDrawable = null;
    private AnimationDrawable mAnimationDrawable2 = null;
    private MediaRecorder mRecorder = null;//
    private Timer mTimer;
    private int mMaxTime;
    private String mFileName = null;

    private OrderPublishModel mOrderPublishModel;
    private LocationInfoModel mLocationInfoModel;
    private HomeModel mHomeModel;
    private C1_PublishOrderAdapter mC1PublishOrderAdapter;
    private SERVICE_TYPE mServiceType;
    private int mServiceTypeId = 0;
    private int mDefaultReceiverId = 0;
    private String service_list;
    public static String DEFAULT_RECEIVER_ID = "default_receiver_id";
    private ArrayList<SERVICE_TYPE> mServiceTypeList = new ArrayList<SERVICE_TYPE>();

    private MediaPlayer mPlayer;
    private SharedPreferences mShared;
    private String mHomeData;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.c1_publish_order);
        mFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        File file = new File(newFileName());
        if (file.exists()) {
            file.delete();
        }

        Intent intent = getIntent();
        mServiceType = (SERVICE_TYPE) intent.getSerializableExtra(O2OMobileAppConst.SERVICE_TYPE);
        mDefaultReceiverId = intent.getIntExtra(DEFAULT_RECEIVER_ID, 0);
        service_list = intent.getStringExtra("service_list");

        mBack = (ImageView) findViewById(R.id.top_view_back);
        mTitle = (TextView) findViewById(R.id.top_view_title);
        mBack.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                finish();
            }
        });
        mArrowImage = (ImageView) findViewById(R.id.top_view_arrow_image);
        mClose = (ImageView) findViewById(R.id.top_view_right_close);
        mTitleView = (LinearLayout) findViewById(R.id.top_view_title_view);
        mServiceTypeView = (FrameLayout) findViewById(R.id.c1_publish_order_service_type_view);
        mServiceTypeListview = (ListView) findViewById(R.id.c1_publish_order_service_type_list);
        mPrice = (EditText) findViewById(R.id.c1_publish_order_price);
        mTime = (TextView) findViewById(R.id.c1_publish_order_time);
        mLocation = (EditText) findViewById(R.id.c1_publish_order_location);
        mText = (EditText) findViewById(R.id.c1_publish_order_text);
        mVoice = (Button) findViewById(R.id.c1_publish_order_voice);
        mVoicePlay = (Button) findViewById(R.id.c1_publish_order_voicePlay);
        mVoiceReset = (ImageView) findViewById(R.id.c1_publish_order_voiceReset);
        mPublish = (Button) findViewById(R.id.c1_publish_order_publish);
        mVoiceView = (FrameLayout) findViewById(R.id.c1_publish_order_voice_view);
        mVoiceAnim = (ImageView) findViewById(R.id.c1_publish_order_voice_anim);
        mVoiceAnim.setImageResource(R.anim.voice_animation);
        mAnimationDrawable = (AnimationDrawable) mVoiceAnim.getDrawable();
        mAnimationDrawable.setOneShot(false);
        mTitleView.setEnabled(false);
        mServiceTypeView.setOnClickListener(null);
        mServiceTypeListview.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                // TODO Auto-generated method stub
                if (mDefaultReceiverId == 0) {
                    mTitle.setText(mHomeModel.publicServiceTypeList.get(position).title);
                    mServiceTypeId = mHomeModel.publicServiceTypeList.get(position).id;
                    mC1PublishOrderAdapter = new C1_PublishOrderAdapter(C1_PublishOrderActivity.this,
                            mHomeModel.publicServiceTypeList, position);
                    mServiceTypeListview.setAdapter(mC1PublishOrderAdapter);
                    mClose.setVisibility(View.GONE);
                    mArrowImage.setImageResource(R.drawable.b3_arrow_down);
                    AnimationUtil.backAnimationFromBottom(mServiceTypeListview);
                    Handler mHandler = new Handler() {
                        @Override
                        public void handleMessage(Message msg) {
                            super.handleMessage(msg);
                            mServiceTypeView.setVisibility(View.GONE);
                        }
                    };
                    mHandler.sendEmptyMessageDelayed(0, 200);
                } else {
                    mTitle.setText(mServiceTypeList.get(position).title);
                    mServiceTypeId = mServiceTypeList.get(position).id;
                    mC1PublishOrderAdapter = new C1_PublishOrderAdapter(C1_PublishOrderActivity.this,
                            mServiceTypeList, position);
                    mServiceTypeListview.setAdapter(mC1PublishOrderAdapter);
                    mClose.setVisibility(View.GONE);
                    mArrowImage.setImageResource(R.drawable.b3_arrow_down);
                    AnimationUtil.backAnimationFromBottom(mServiceTypeListview);
                    Handler mHandler = new Handler() {
                        @Override
                        public void handleMessage(Message msg) {
                            super.handleMessage(msg);
                            mServiceTypeView.setVisibility(View.GONE);
                        }
                    };
                    mHandler.sendEmptyMessageDelayed(0, 200);
                }

            }
        });

        mTitleView.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                if (mServiceTypeView.getVisibility() == View.GONE) {
                    mServiceTypeView.setVisibility(View.VISIBLE);
                    mClose.setVisibility(View.VISIBLE);
                    mArrowImage.setImageResource(R.drawable.b4_arrow_up);
                    AnimationUtil.showAnimationFromTop(mServiceTypeListview);
                    closeKeyBoard();
                } else {
                    mClose.setVisibility(View.GONE);
                    mArrowImage.setImageResource(R.drawable.b3_arrow_down);
                    AnimationUtil.backAnimationFromBottom(mServiceTypeListview);
                    Handler mHandler = new Handler() {
                        @Override
                        public void handleMessage(Message msg) {
                            super.handleMessage(msg);
                            mServiceTypeView.setVisibility(View.GONE);
                        }
                    };
                    mHandler.sendEmptyMessageDelayed(0, 200);
                }
            }
        });

        mClose.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                mClose.setVisibility(View.GONE);
                mArrowImage.setImageResource(R.drawable.b3_arrow_down);
                AnimationUtil.backAnimationFromBottom(mServiceTypeListview);
                Handler mHandler = new Handler() {
                    @Override
                    public void handleMessage(Message msg) {
                        super.handleMessage(msg);
                        mServiceTypeView.setVisibility(View.GONE);
                    }
                };
                mHandler.sendEmptyMessageDelayed(0, 200);
            }
        });

        mPrice.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                // TODO Auto-generated method stub
                if (s.toString().length() > 0) {
                    if (s.toString().substring(0, 1).equals(".")) {
                        s = s.toString().substring(1, s.length());
                        mPrice.setText(s);
                    }
                }
                if (s.toString().length() > 1) {
                    if (s.toString().substring(0, 1).equals("0")) {
                        if (!s.toString().substring(1, 2).equals(".")) {
                            s = s.toString().substring(1, s.length());
                            mPrice.setText(s);
                            CharSequence charSequencePirce = mPrice.getText();
                            if (charSequencePirce instanceof Spannable) {
                                Spannable spanText = (Spannable) charSequencePirce;
                                Selection.setSelection(spanText, charSequencePirce.length());
                            }
                        }
                    }
                }
                boolean flag = false;
                for (int i = 0; i < s.toString().length() - 1; i++) {
                    String getstr = s.toString().substring(i, i + 1);
                    if (getstr.equals(".")) {
                        flag = true;
                        break;
                    }
                }
                if (flag) {
                    int i = s.toString().indexOf(".");
                    if (s.toString().length() - 3 > i) {
                        String getstr = s.toString().substring(0, i + 3);
                        mPrice.setText(getstr);
                        CharSequence charSequencePirce = mPrice.getText();
                        if (charSequencePirce instanceof Spannable) {
                            Spannable spanText = (Spannable) charSequencePirce;
                            Selection.setSelection(spanText, charSequencePirce.length());
                        }
                    }
                }
            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                // TODO Auto-generated method stub
            }

            @Override
            public void afterTextChanged(Editable s) {
                // TODO Auto-generated method stub
            }
        });

        initData();

        mHomeModel = new HomeModel(this);
        mHomeModel.addResponseListener(this);
        if (mDefaultReceiverId == 0) {
            mShared = getSharedPreferences(O2OMobileAppConst.USERINFO, 0);
            mHomeData = mShared.getString("home_data", "");
            if ("".equals(mHomeData)) {
                mHomeModel.getServiceTypeList();
            } else {
                try {
                    servicetypelistResponse response = new servicetypelistResponse();
                    response.fromJson(new JSONObject(mHomeData));
                    mHomeModel.publicServiceTypeList = response.services;
                    setServiceTypeAdater();
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        } else {
            if (service_list != null && !"".equals(service_list)) {
                try {
                    JSONObject userJson = new JSONObject(service_list);
                    myservicelistResponse response = new myservicelistResponse();
                    response.fromJson(userJson);
                    for (int i = 0; i < response.services.size(); i++) {
                        SERVICE_TYPE service = new SERVICE_TYPE();
                        service = response.services.get(i).service_type;
                        mServiceTypeList.add(service);
                    }
                    if (mServiceTypeList.size() > 0) {
                        mTitleView.setEnabled(true);
                        mArrowImage.setVisibility(View.VISIBLE);
                        if (mServiceType != null) {
                            for (int i = 0; i < mServiceTypeList.size(); i++) {
                                if (mServiceType.id == mServiceTypeList.get(i).id) {
                                    mC1PublishOrderAdapter = new C1_PublishOrderAdapter(this, mServiceTypeList, i);
                                    mServiceTypeListview.setAdapter(mC1PublishOrderAdapter);
                                    mTitle.setText(mServiceTypeList.get(i).title);
                                    mServiceTypeId = mServiceTypeList.get(i).id;
                                    break;
                                }
                            }
                        } else {
                            mC1PublishOrderAdapter = new C1_PublishOrderAdapter(this, mServiceTypeList);
                            mServiceTypeListview.setAdapter(mC1PublishOrderAdapter);
                            mTitle.setText(getString(R.string.select_service));
                        }

                    }
                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            } else {
                mShared = getSharedPreferences(O2OMobileAppConst.USERINFO, 0);
                mHomeData = mShared.getString("home_data", "");
                if ("".equals(mHomeData)) {
                    mHomeModel.getServiceTypeList();
                } else {
                    try {
                        servicetypelistResponse response = new servicetypelistResponse();
                        response.fromJson(new JSONObject(mHomeData));
                        mHomeModel.publicServiceTypeList = response.services;
                        setServiceTypeAdater();
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        mLocationInfoModel = new LocationInfoModel(this);
        mLocationInfoModel.addResponseListener(this);
        mLocationInfoModel.get();

        mOrderPublishModel = new OrderPublishModel(this);
        mOrderPublishModel.addResponseListener(this);

        //??
        CharSequence charSequencePirce = mPrice.getText();
        if (charSequencePirce instanceof Spannable) {
            Spannable spanText = (Spannable) charSequencePirce;
            Selection.setSelection(spanText, charSequencePirce.length());
        }
        CharSequence charSequenceLocation = mLocation.getText();
        if (charSequenceLocation instanceof Spannable) {
            Spannable spanText = (Spannable) charSequenceLocation;
            Selection.setSelection(spanText, charSequenceLocation.length());
        }

        mVoice.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                if (event.getAction() == MotionEvent.ACTION_DOWN) {
                    closeKeyBoard();
                    mVoice.setKeepScreenOn(true);
                    mMaxTime = MAX_TIME;
                    mVoiceView.setVisibility(View.VISIBLE);
                    mAnimationDrawable.start();
                    startRecording();
                } else if (event.getAction() == MotionEvent.ACTION_UP) {
                    mVoice.setKeepScreenOn(false);
                    mVoiceView.setVisibility(View.GONE);
                    mAnimationDrawable.stop();
                    if (mMaxTime > 28) {
                        mVoice.setEnabled(false);
                        Handler mHandler = new Handler() {
                            @Override
                            public void handleMessage(Message msg) {
                                super.handleMessage(msg);
                                stopRecording();
                                mVoice.setEnabled(true);
                            }
                        };
                        mHandler.sendEmptyMessageDelayed(0, 500);
                    } else {
                        stopRecording();
                    }
                } else if (event.getAction() == MotionEvent.ACTION_CANCEL) {
                    mVoice.setKeepScreenOn(false);
                    mVoiceView.setVisibility(View.GONE);
                    mAnimationDrawable.stop();
                    if (mMaxTime > 28) {
                        mVoice.setEnabled(false);
                        Handler mHandler = new Handler() {
                            @Override
                            public void handleMessage(Message msg) {
                                super.handleMessage(msg);
                                stopRecording();
                                mVoice.setEnabled(true);
                            }
                        };
                        mHandler.sendEmptyMessageDelayed(0, 500);
                    } else {
                        stopRecording();
                    }
                } else if (event.getAction() == MotionEvent.ACTION_MOVE) {
                    mVoice.getParent().requestDisallowInterceptTouchEvent(true);
                }
                return false;
            }
        });

        mVoicePlay.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                if (mPlayer == null) {
                    File file = new File(mFileName);
                    if (file.exists()) {
                        mPlayer = new MediaPlayer();
                        mVoicePlay.setBackgroundResource(R.anim.record_animation);
                        mAnimationDrawable2 = (AnimationDrawable) mVoicePlay.getBackground();
                        mAnimationDrawable2.setOneShot(false);
                        mAnimationDrawable2.start();
                        try {
                            mPlayer.setDataSource(mFileName);
                            mPlayer.prepare();
                            mPlayer.start();
                            mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                                @Override
                                public void onCompletion(MediaPlayer mp) {
                                    mp.reset();
                                    mPlayer = null;
                                    mVoicePlay.setBackgroundResource(R.drawable.b5_play_btn);
                                    mAnimationDrawable2.stop();
                                }
                            });
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    } else {
                        Toast.makeText(C1_PublishOrderActivity.this, getString(R.string.file_does_not_exist),
                                Toast.LENGTH_SHORT).show();
                    }
                } else {
                    mPlayer.release();
                    mPlayer = null;
                    mVoicePlay.setBackgroundResource(R.drawable.b5_play_btn);
                    mAnimationDrawable2.stop();
                }
            }
        });

        mVoiceReset.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                if (mPlayer != null) {
                    mPlayer.release();
                    mPlayer = null;
                    mVoicePlay.setBackgroundResource(R.drawable.b5_play_btn);
                    mAnimationDrawable2.stop();
                }
                File file = new File(mFileName);
                if (file.exists()) {
                    file.delete();
                }
                mVoice.setVisibility(View.VISIBLE);
                mVoicePlay.setVisibility(View.GONE);
                mVoiceReset.setVisibility(View.GONE);
            }
        });

        mPublish.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                File file = new File(newFileName());
                int duration = 0;
                if (file.exists()) {
                    MediaPlayer mp = MediaPlayer.create(C1_PublishOrderActivity.this, Uri.parse(mFileName));
                    if (null != mp) {
                        duration = mp.getDuration();//? ms
                        mp.release();
                    }
                    if (duration % 1000 > 500) {
                        duration = duration / 1000 + 1;
                    } else {
                        duration = duration / 1000;
                    }
                } else {
                    file = null;
                }
                int num = 0;
                try { // ??
                    Date date = new Date();
                    Date date1 = mFormat.parse(mFormat.format(date));
                    Date date2 = mFormat.parse(mTime.getText().toString());
                    num = date2.compareTo(date1);

                    if (num < 0) {
                        long diff = date1.getTime() - date2.getTime();
                        long mins = diff / (1000 * 60);
                        if (mins < 3) {
                            num = 1;
                        }
                    }
                } catch (ParseException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                if (mServiceTypeId == 0) {
                    ToastView toast = new ToastView(C1_PublishOrderActivity.this,
                            getString(R.string.select_service));
                    toast.setGravity(Gravity.CENTER, 0, 0);
                    toast.show();
                } else if (mPrice.getText().toString().equals("")) {
                    ToastView toast = new ToastView(C1_PublishOrderActivity.this, getString(R.string.price_range));
                    toast.setGravity(Gravity.CENTER, 0, 0);
                    toast.show();
                } else if (mPrice.getText().toString().equals("0.")) {
                    ToastView toast = new ToastView(C1_PublishOrderActivity.this, getString(R.string.right_price));
                    toast.setGravity(Gravity.CENTER, 0, 0);
                    toast.show();
                } else if (mTime.getText().toString().equals("")) {
                    ToastView toast = new ToastView(C1_PublishOrderActivity.this, getString(R.string.appoint_time));
                    toast.setGravity(Gravity.CENTER, 0, 0);
                    toast.show();
                } else if (num < 0) {
                    ToastView toast = new ToastView(C1_PublishOrderActivity.this,
                            getString(R.string.wrong_appoint_time_hint));
                    toast.setGravity(Gravity.CENTER, 0, 0);
                    toast.show();
                } else if (mLocation.getText().toString().equals("")) {
                    ToastView toast = new ToastView(C1_PublishOrderActivity.this,
                            getString(R.string.appoint_location_hint));
                    toast.setGravity(Gravity.CENTER, 0, 0);
                    toast.show();
                } else {
                    mOrderPublishModel.publish(mPrice.getText().toString(), mTime.getText().toString(),
                            mLocation.getText().toString(), mText.getText().toString(), file, mServiceTypeId,
                            mDefaultReceiverId, duration);
                }
            }
        });
    }

    public void initData() {
        Date date = new Date();
        mTime.setText(mFormat.format(date));
        mTime.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                closeKeyBoard();
                LayoutInflater inflater = LayoutInflater.from(C1_PublishOrderActivity.this);
                final View timepickerview = inflater.inflate(R.layout.timepicker, null);
                ScreenInfo screenInfo = new ScreenInfo(C1_PublishOrderActivity.this);
                mWheelMain = new WheelMain(timepickerview, true);
                mWheelMain.screenheight = screenInfo.getHeight();
                Calendar calendar = Calendar.getInstance();
                try {
                    calendar.setTime(mFormat.parse(mTime.getText().toString()));
                } catch (ParseException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                int year = calendar.get(Calendar.YEAR);
                int month = calendar.get(Calendar.MONTH);
                int day = calendar.get(Calendar.DAY_OF_MONTH);
                int hour = calendar.get(Calendar.HOUR_OF_DAY);
                int min = calendar.get(Calendar.MINUTE);
                mWheelMain.initDateTimePicker(year, month, day, hour, min);
                new AlertDialog.Builder(C1_PublishOrderActivity.this).setTitle(getString(R.string.choose_time))
                        .setView(timepickerview)
                        .setPositiveButton(getString(R.string.confirm), new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                mTime.setText(mWheelMain.getTime());
                            }
                        }).setNegativeButton(getString(R.string.cancel), new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                            }
                        }).show();
            }
        });
    }

    // 
    public void closeKeyBoard() {
        mPrice.clearFocus();
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(mPrice.getWindowToken(), 0);
    }

    /**
     * 
     */
    private void startRecording() {
        mFileName = newFileName();
        //
        try {
            mRecorder = new MediaRecorder();
            //?
            mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
            //???
            mRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);
            mRecorder.setAudioSamplingRate(8000);
            mRecorder.setAudioEncodingBitRate(16);
            //??
            mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
            mRecorder.setOutputFile(mFileName);
            mRecorder.prepare();
            mRecorder.start();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (IllegalStateException e2) {
            e2.printStackTrace();
        }

        mTimer = new Timer();
        TimerTask timerTask = new TimerTask() {
            @Override
            public void run() {
                // TODO Auto-generated method stub
                mMaxTime--;
                Message msg = new Message();
                msg.what = mMaxTime;
                handler.sendMessage(msg);
            }
        };
        mTimer.schedule(timerTask, 1000, 1000);
    }

    Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            // TODO Auto-generated method stub
            super.handleMessage(msg);
            if (msg.what < 0) {
                stopRecording();
                if (mTimer != null) {
                    mTimer.cancel();
                }
                mTimer = null;
                mVoiceView.setVisibility(View.GONE);
                mAnimationDrawable.stop();
            }
        }
    };

    /**
     * ?
     */
    private void stopRecording() {
        if (mTimer != null) {
            mTimer.cancel(); //??
        }
        mTimer = null;
        if (mRecorder != null) {
            try {
                mRecorder.stop();
                mRecorder.reset();
                mRecorder.release();
            } catch (IllegalStateException e) {
                e.printStackTrace();
            }
        }
        mRecorder = null;

        MediaPlayer mp = MediaPlayer.create(this, Uri.parse(mFileName));
        if (null != mp) {
            int duration = mp.getDuration();//? ms
            if (duration > 3000) {
                mVoice.setVisibility(View.GONE);
                mVoicePlay.setVisibility(View.VISIBLE);
                mVoiceReset.setVisibility(View.VISIBLE);
            } else {
                ToastView toast = new ToastView(C1_PublishOrderActivity.this,
                        getString(R.string.record_time_too_short));
                toast.setGravity(Gravity.CENTER, 0, 0);
                toast.show();
                File file = new File(newFileName());
                if (file.exists()) {
                    file.delete();
                }
            }
            mp.release();
        }
        mVoice.setKeepScreenOn(false);
    }

    private String newFileName() {
        String mFileName = O2OMobileAppConst.FILEPATH;
        File fileDir = new File(O2OMobileAppConst.FILEPATH + "media/");
        if (!fileDir.exists()) {
            fileDir.mkdirs();
        }
        return mFileName += "media/voice.amr";
    }

    @Override
    public void OnMessageResponse(String url, JSONObject jo, AjaxStatus status) throws JSONException {
        // TODO Auto-generated method stub
        if (url.endsWith(ApiInterface.ORDER_PUBLISH)) {
            orderpublishResponse response = new orderpublishResponse();
            response.fromJson(jo);
            ToastView toast = new ToastView(C1_PublishOrderActivity.this, getString(R.string.public_success));
            toast.setGravity(Gravity.CENTER, 0, 0);
            toast.show();
            File file = new File(newFileName());
            if (file.exists()) {
                file.delete();
            }
            if (mDefaultReceiverId == 0) {
                Intent it = new Intent(this, C2_PublishOrderDistributeActivity.class);
                it.putExtra(O2OMobileAppConst.ORDERINFO, response.order_info);
                startActivity(it);
                finish();
            } else {
                finish();
            }

        } else if (url.endsWith(ApiInterface.LOCATION_INFO)) {
            mLocation.setText(mLocationInfoModel.publicLocationName);
        } else if (url.endsWith(ApiInterface.SERVICETYPE_LIST)) {
            setServiceTypeAdater();
        }
    }

    private void setServiceTypeAdater() {
        if (mHomeModel.publicServiceTypeList.size() > 0) {
            mTitleView.setEnabled(true);
            mArrowImage.setVisibility(View.VISIBLE);

            if (mServiceType == null) {
                mC1PublishOrderAdapter = new C1_PublishOrderAdapter(this, mHomeModel.publicServiceTypeList);
                mServiceTypeListview.setAdapter(mC1PublishOrderAdapter);
                mTitle.setText(getString(R.string.select_service));
            } else {
                for (int i = 0; i < mHomeModel.publicServiceTypeList.size(); i++) {
                    if (mServiceType.id == mHomeModel.publicServiceTypeList.get(i).id) {
                        mC1PublishOrderAdapter = new C1_PublishOrderAdapter(this, mHomeModel.publicServiceTypeList,
                                i);
                        mServiceTypeListview.setAdapter(mC1PublishOrderAdapter);
                        mTitle.setText(mHomeModel.publicServiceTypeList.get(i).title);
                        mServiceTypeId = mHomeModel.publicServiceTypeList.get(i).id;
                        break;
                    }
                }
            }
        }
    }

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        File file = new File(newFileName());
        if (file.exists()) {
            file.delete();
        }
        if (mPlayer != null) {
            mPlayer.release();
            mPlayer = null;
            mVoicePlay.setBackgroundResource(R.drawable.b5_play_btn);
            mAnimationDrawable2.stop();
        }
    }
}