博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转]大话企业级Android应用开发实战 巧用GPS找回丢失的手机
阅读量:5941 次
发布时间:2019-06-19

本文共 23089 字,大约阅读时间需要 76 分钟。

                      45  巧用GPS找回丢失的手机 

3.实现

编写Position.java:

package com.sharpandroid.util;

 

import android.content.Context;

import android.location.Criteria;

import android.location.Location;

import android.location.LocationManager;

 

public class Position {

   

    private static LocationManager locationManager;

    private static Location location;

    private static String reLocationProvider;

   

    public static String getPosition(Context con) {

        locationManager = (LocationManager) con.getSystemService

(con.LOCATION_SERVICE);

        location = getLocationProvider(locationManager);

        if (location != null) {   

            StringBuffer buffer = new StringBuffer();

            buffer.append("Latitude : ");

            buffer.append(Double.toString(location.getLatitude()));

            buffer.append(",Longitude :");

            buffer.append(Double.toString(location.getLongitude()));

            return buffer.toString();

        }

        else {

            return null;

        }

    }

   

    public static Location  getLocationProvider(LocationManager

locationManager){

        Location reLocation = null;

        Criteria criteria = new Criteria();

        criteria.setAccuracy(Criteria.ACCURACY_FINE);

        criteria.setBearingRequired(false);

        criteria.setPowerRequirement(Criteria.POWER_LOW);

        reLocationProvider = locationManager.getBestProvider(criteria,

true);

        reLocation = locationManager.getLastKnownLocation

(reLocationProvider);

        return reLocation;

    }

}

1)情况1

编写SMSListen.java:

 

package com.sharpandroid.sms;

 

import java.text.SimpleDateFormat;

import java.util.Date;

 

import com.sharpandroid.util.Position;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.telephony.SmsManager;

import android.telephony.SmsMessage;

 

public class SMSListen extends BroadcastReceiver {

 

    private static String position;  

    @Override

    public void onReceive(Context context, Intent intent) {

0//这个方法一旦返回了,android会回收BroadcastReceiver

        final Context con = context;

        Object[] pdus = (Object[])intent.getExtras().get("pdus");

        if(pdus!=null && pdus.length>0){

            SmsMessage[] messages = new SmsMessage[pdus.length];

            for(int i=0 ; i<pdus.length ; i++){

                byte[] pdu = (byte[])pdus[i];

                messages[i] = SmsMessage.createFromPdu(pdu);

            }

            for(SmsMessage msg : messages){

                final SmsMessage sms = msg;

                String content = msg.getMessageBody();

                final String sender = msg.getOriginatingAddress();

                if(content.startsWith(":getloacation")){

                   

                    new Runnable() {

                        public void run() {

                            //调用该方法获得当前位置

                            position = Position.getPosition(con);

                            if(position!=null){

                                SimpleDateFormat format = new

SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

                                String sendContent = format.format(new

Date(sms.getTimestampMillis()))+ ":"+position;

                                SmsManager smsManager = SmsManager.

getDefault();

                                //回复短信

                                smsManager.sendTextMessage(sender, null,

sendContent, null, null);

                            }

                        }

                    }.run();

                }

            }

            }

        }

       

}

 

2)情况2

package com.sharpandroid.sms;

 

import com.sharpandroid.util.Position;

 

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.telephony.SmsManager;

import android.telephony.TelephonyManager;

 

public class PowerBoot extends BroadcastReceiver {

   

    TelephonyManager tm ;

    @Override

    public void onReceive(Context context, Intent intent) {

        final Context con = context;

        if(tm.getSimSerialNumber()!=null)

        {

        //预先设置好的SIM卡编码

        if(tm.getSimSerialNumber()!="XXXXXXXXXXXX"){

                new Runnable() {

                    public void run() {

             String position = Position.getPosition(con);

             SmsManager smsManager = SmsManager.getDefault();

                //预先设置好的电话号码

                smsManager.sendTextMessage("5556", null, position, null,

null);

                    }

                }.run();

        }

        }

    }

}

 

 

 

编写AndroidManifest.xml:

<?xml version="1.0" encoding="UTF-8"?>

<manifest android:versionCode="1" android:versionName="1.0"

    package="com.sharpandroid.sms" xmlns:android="http://schemas.

android.com/apk/res/android">

    <application android:icon="@drawable/icon" android:label=

"@string/app_name">

        <receiver android:name=".SMSListen">

            <intent-filter>

                <action android:name="android.provider.Telephony.SMS_

RECEIVED"/>

            </intent-filter>

        </receiver>

        <receiver android:name=".PowerBoot">

            <intent-filter>

                <action android:name="android.intent.action.BOOT_

COMPLETED"/>

            </intent-filter>

        </receiver>

    </application>

    <uses-sdk android:minSdkVersion="7"/>

    <uses-permission android:name="android.permission.RECEIVE_SMS"/>

    <!-- 接收短信权限 -->

    <uses-permission android:name="android.permission.SEND_SMS"/>

    <!-- 发送短信权限 -->

    <uses-permission android:name="android.permission.READ_SMS"/>

    <uses-permission android:name="android.permission.ACCESS_FINE_

LOCATION"/>

    <uses-permission android:name="android.permission.ACCESS_COARSE_

LOCATION"/>

</manifest>

46  网络视频播放器

46.2  项目实现流程

46.2.2  UI页面设计

具体代码为:

   <?xml version="1.0" encoding="utf-8" ?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:background="@drawable/back">

   

      <TextView android:layout_width="fill_parent"

      android:layout_height="wrap_content" />

     

      <EditText android:layout_width="fill_parent"

      android:layout_height="wrap_content"

      android:id="@+id/path" />

     

      <ProgressBar android:layout_width="fill_parent"

      android:layout_height="18dip"

      style="?android:attr/progressBarStyleHorizontal"

      android:id="@+id/progressBar" />

     

      <TextView android:layout_width="fill_parent"

      android:layout_height="wrap_content"

      android:gravity="center" android:id="@+id/result" />

     

     

      <Button android:layout_width="wrap_content"

      android:layout_height="wrap_content"

      android:text="下载"

      android:id="@+id/button_download" />

     

      <Button android:layout_width="wrap_content"

      android:layout_height="wrap_content"

      android:text="暂停"

      android:id="@+id/button_pause" />

     

      <Button android:layout_width="wrap_content"

      android:layout_height="wrap_content"

      android:text="删除"

      android:id="@+id/button_delete" />

     

      <Button android:layout_width="wrap_content"

      android:layout_height="wrap_content"

      android:text="返回首页"

      android:id="@+id/button_back" />

     

      <Button android:layout_width="wrap_content"

      android:layout_height="wrap_content"

      android:id="@+id/button_alreadylist"

      android:text="已下载列表" />

  </LinearLayout>

已下载列表界面具体代码为:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout   xmlns:android="http://schemas.android.com/apk/res/

android"

                android:orientation="vertical"

                android:layout_width="fill_parent"

                android:layout_height="fill_parent"

                android:padding="10px">

    <SurfaceView 

                android:layout_width="fill_parent"

                android:layout_height="240dip"

                android:id="@+id/surfaceView"

                />

   <RelativeLayout

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:gravity="center"

    >

    <TextView 

            android:id="@+id/playTime"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="00:00"

    >

    </TextView>

            <SeekBar

    android:id="@+id/progress_bar"

    android:layout_height="wrap_content"

    android:layout_width="200px"

    android:layout_toRightOf="@id/playTime"

    style="?android:attr/progressBarStyleHorizontal"

    />

      <TextView 

              android:id="@+id/totalTime"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_toRightOf="@id/progress_bar"

            android:text="00:00"

    ></TextView>

</RelativeLayout>  

   <RelativeLayout

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:gravity="center"

    >

    <ImageButton android:id="@+id/button_up"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_marginTop="5px"

                    style="?android:attr/buttonStyleSmall"

                 android:src="@drawable/button_up"/>

    <ImageButton android:id="@+id/button_play"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_toRightOf="@id/button_up"

                    android:layout_marginTop="5px" 

                    style="?android:attr/buttonStyleSmall"

                 android:src="@drawable/button_pause"/>

    <ImageButton android:id="@+id/button_next"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_toRightOf="@id/button_play"

                    android:layout_marginTop="5px"

                    style="?android:attr/buttonStyleSmall"

                 android:src="@drawable/button_next"/>

</RelativeLayout>

</LinearLayout>

46.2.3  XML解析

2)Handler类

由于从服务器得到的XML的结构较为简单,在重写Handler时,没必要重写无关的事件,ChannelHandler.java代码如下:

package com.sharpandroid_video.channel.entity.xml;

 

import java.util.ArrayList;

 

import org.xml.sax.SAXException;

import org.xml.sax.helpers.DefaultHandler;

 

import com.sharpandroid_video.channel.entity.Category;

 

public class ChannelHandler extends DefaultHandler {

 

    private String content;

    private Category current=new Category();

   

    public ArrayList<Category> channels=new ArrayList<Category>();

 

    @Override

    public void characters(char[] ch, int start, int length)

            throws SAXException {

        String part=new String(ch,start,length);

        if(!part.equals("\n"))

            if(content!=null)

                content+=part;

            else

                content=part;

    }

 

    @Override

    public void endElement(String uri, String localName, String name)

            throws SAXException {

        if("categoryid".equalsIgnoreCase(localName)){

            current.setCategoryid(content);

        }else if("regularIcon".equalsIgnoreCase(localName)){

            current.setRegularIcon(content);

        }else if("AltIcon".equalsIgnoreCase(localName)){

            current.setAltIcon(content);

        }else if("Thumbnail".equalsIgnoreCase(localName)){

        ……

            channels.add(current);

            current=new Category();

        }

        content=null;

    }

}

3)方法实现

在实体类、Handler类编写完毕后,就是整体的实现过程,下面给出获得“推荐内容”XML文件的过程,其他方法类同。

public static ArrayList<Video> TopVideoList() {

       

        try {

            VideoHandler handler=new VideoHandler();

            //想服务器端发送相应请求,请注意链接为自己的链接,记得更改IP地址为服务

              器的IP及端口号

String http = "http://192.168.1.188:8080/SharpVideo/getSharpVideo.jsp";

            InputStream input=new URL(http).openStream();

            SAXParser sp = spf.newSAXParser();

            XMLReader reader = sp.getXMLReader();

            reader.setContentHandler(handler);

            InputSource inputSource=new InputSource(input);

            reader.parse(inputSource); 

            input.close();

            return handler.videos;

        } catch (Exception e) {

            e.printStackTrace();

        }

        return null;

    }

46.2.4  视频文件下载

3.下载模块的暂停

编写DownLoaderActivity.java代码:

package com.sharpandroid_video.download.download.activity;

 

public class DownLoaderActivity extends Activity {

    private static final String TAG = "DownLoaderActivity";

    private EditText pathEditText;

    private ProgressBar progressBar;

    private TextView resultView;

    private Button button_download;

    private Button button_pause;

    private Button button_delete;

    private Button button_already;

    private Button button_back;

    private FileDownloader downloader;

    private FileService fileService;

    public static Map<String, Boolean> flags = new HashMap<String,

Boolean>();

    // 首先定义静态的标志位

 

    public static int isDowning = 0;

   

    //0为未下载,1为正在下载 ,2为暂停 ,3为下载完成

   

    private Handler handler = new Handler() {  

        @Override

        public void handleMessage(Message msg) {

            if (!Thread.currentThread().isInterrupted()) {

                switch (msg.what) {

                case 1:

                    int size = msg.getData().getInt("size");

                    String fileloadpath = msg.getData().

getString("stringbuilder");

                    progressBar.setProgress(size);

                    int result = (int) (((float) progressBar.getProgress()

/ (float) progressBar

                            .getMax()) * 100);

                    resultView.setText(result + "%");

                    if (progressBar.getMax() == progressBar.getProgress()) {

                        setTitle("下载成功");

                        showToastString("下载成功");

                        isDowning = 3;

                        fileService = new FileService(DownLoaderActivity.

this);

                        InternetFile internetFile = new InternetFile();

                        internetFile.setName(FileDownloader.filename);

                        internetFile.setSavepath(fileloadpath);

                        try {

                         fileService.save(internetFile);

                        } catch (Exception e) {

                            e.printStackTrace();

                        }

                   }

                    break;

case -1:

                    String error = msg.getData().getString("error");

                    showToastString(error);

                    break;

                }

            }

            super.handleMessage(msg);

        }

    };  

调用数据库的save保存方法,将文件实体保存到数据库中。

@Override

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.downloader);

    Intent intent =this.getIntent();

    final String path = intent.getExtras().getString("url").trim();

    pathEditText = (EditText) this.findViewById(R.id.path);

    pathEditText.setText(path);

   

    progressBar = (ProgressBar) findViewById(R.id.progressBar);

    resultView = (TextView) findViewById(R.id.result);

    /**

     * 下载操作

     */

    button_download = (Button) findViewById(R.id.button_download);

    button_download.setOnClickListener(new View.OnClickListener() {

        /**

         * 0为未下载,1为正在下载 ,2为暂停 ,3为下载完成

         * 下载文件,并保存到SDCard

         */

        @Override

        public void onClick(View v) {

            setTitle("正在下载中");

            if(isDowning ==1){

                showToastString("正在下载中!");

            }

            if(isDowning == 0 || isDowning ==2)

               if (Environment.getExternalStorageState().equals(

                    Environment.MEDIA_MOUNTED)) {

                try {

                    flags.put(path, true);

                    download(path, Environment

                            .getExternalStorageDirectory());// 1

                    isDowning = 1;

                    showToastString("开始下载!");

                } catch (Exception e) {

                    showToastString("网络连接失败!");

                    Log.e(TAG, e.toString());

                }

            } else {

                showToastString("SD卡出现错误!");

            }

        }

    });

DownloadThread.java中更新的代码:

package com.sharpandroid_video.download.net.download;

 

public class DownloadThread extends Thread {

            …

                print("线程 " + this.threadId + "从位置"+ this.startPos+ "

开始下载 ");

                Map<String , Boolean> flags = DownLoaderActivity.flags;

                Boolean flag = flags.get(this.downUrl.toString());

               

                while (flag && downLength < block && (offset = inStream.

read(buffer, 0, max)) != -1) {

                   

                   

                    saveFile.write(buffer, 0, offset);

                    downLength += offset;

                    downloader.update(this.threadId, block * (threadId - 1)

+ downLength);

                    downloader.saveLogFile();

                    downloader.append(offset);

                    int spare = block-downLength;//求剩下的字节数

                    if(spare < max) max = (int) spare;

                    flag = flags.get(this.downUrl.toString());

                }

                saveFile.close();

               …

        return downLength;

    }

}

 

新建实体bean名为InternetFile,编写InternetFile.java:

   package com.sharpandroid.domain;

 

public class InternetFile {

   

    private Integer fileid;

    private String name;

    private String savepath;

    public InternetFile(){

       

    }

    public InternetFile(Integer fileid,String name,String savepath){

       

        this.fileid = fileid;

        this.name = name;

        this.savepath = savepath;

       

    }

    public Integer getFileid() {

        return fileid;

    }

    public void setFileid(Integer fileid) {

        this.fileid = fileid;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public String getSavepath() {

        return savepath;

    }

    public void setSavepath(String savepath) {

        this.savepath = savepath;

    }

}

4.数据库部分

在DBOpenHelper.java中更新代码:

     package com.sharpandroid_video.download.service;

 

     public class DBOpenHelper extends SQLiteOpenHelper {

    private static final String DBNAME = "sharpandroid.db";

    private static final int VERSION = 1;

   

    public DBOpenHelper(Context context) {

        super(context, DBNAME, null, VERSION);

    }   

//  创建两个表

    @Override

    public void onCreate(SQLiteDatabase db) {

        db.execSQL("CREATE TABLE IF NOT EXISTS filedown (id integer primary

key autoincrement, downpath varchar(100), threadid INTEGER, position

INTEGER)");

        db.execSQL("CREATE TABLE IF NOT EXISTS downfile (fileid integer

primary key autoincrement, name varchar(100), savepath varchar(255))");

    }

//对表的版本进行更新

    @Override

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        db.execSQL("DROP TABLE IF EXISTS filedown");

        db.execSQL("DROP TABLE IF EXISTS downfile");

        onCreate(db);

    }

}

在FileService.java中代码更新为:

 package com.sharpandroid_video.download.service;

 

public class FileService {

    private DBOpenHelper openHelper;

 

   

    /**

     * 网络下载文件的存储

*将下载完的文件名和文件的目录分别保存在数据库中

     */

    public void save(InternetFile internetFile){

        SQLiteDatabase database = openHelper.getWritableDatabase();

        database.execSQL("insert into downfile(name, savepath)

values(?,?)", new Object[]{

                internetFile.getName(),internetFile.getSavepath()});

        database.close();

    }

 

    /**

     * 下载文件的分页显示

     * @param startResult

     * @param maxResult

     * @return

     */

    public List<InternetFile> getScrollData(int startResult, int

maxResult){

        List<InternetFile> InternetFiles = new ArrayList<InternetFile>();

        SQLiteDatabase database = openHelper.getWritableDatabase();

        Cursor cursor = database.rawQuery("select * from downfile

limit ?,?",

                new String[]{String.valueOf(startResult), String.valueOf

(maxResult)});

        while(cursor.moveToNext()){

            InternetFiles.add(new InternetFile(cursor.getInt(0), cursor.

getString(1), cursor.getString(2)));

        }

        return InternetFiles;

    }

}

在DownloadProgressListener 中代码更新为:

package com.sharpandroid_video.download.net.download;

 

public interface DownloadProgressListener {

    public void onDownloadSize(int size);

}

5.下载模块的删除

新建DelFile类,实现对下载文件的删除操作,代码如下:

package com.sharpandroid_video.download.service;

 

public class DelFile {

    private static final String TAG = "DelFile";

    

     public static  Boolean delFile(String filename){

    try {

        File file = new File(Environment.getExternalStorageDirectory(),

filename);

        Boolean flag = file.delete();

        Log.i(TAG,flag.toString());

       } catch (Exception e) {

            e.printStackTrace();

        }

        return true;

   }

}   

46.2.5  下载文件播放

1.已下载视频列表

新建SaveFileActivity类,用于显示已经下载文件的列表信息:

public class SaveFileActivity extends Activity {

    private static final String TAG ="SaveFileActivity";

    private ListView listView;

    private FileService fileService;

    @Override

    public  void onCreate(Bundle savedInstanceState) {

       

        super.onCreate(savedInstanceState);

        setContentView(R.layout.savefile);

        listView = (ListView) this.findViewById(R.id.listView);

        fileService = new FileService(this);

       

        List<InternetFile> internetFiles = fileService.getScrollData(0, 8);

        List<HashMap<String, String>> data = new ArrayList<HashMap<String,

String>>();

        for(InternetFile internetFile : internetFiles){

             HashMap<String, String> map = new HashMap<String, String>();

             map.put("fileid", String.valueOf(internetFile.getFileid()));

             map.put("name", internetFile.getName());

             map.put("savepath", internetFile.getSavepath());

             data.add(map);

             

        }

        SimpleAdapter adapter = new SimpleAdapter(SaveFileActivity.this,

data,R.layout.savefile,

                new String[]{"fileid","name","savepath"},new int[]

{R.id.fileid,R.id.filename,R.id.savepath});

           

            listView.setAdapter(adapter);

            listView.setOnItemClickListener(new AdapterView.

OnItemClickListener() {

 

                @Override

                public void onItemClick(AdapterView<?> parent, View view,

                    int position, long id) {

                    HashMap<String, String> itemdata = (HashMap<String,

String>) listView.getItemAtPosition(position);

                      String savepath = itemdata.get("savepath");

                      String name = itemdata.get("name");

                      String fileid =itemdata.get("fileid");

                      Log.i(TAG, "personid="+ fileid+ " name="+name + "

savepath="+ savepath);

                      Intent intent = new Intent(SaveFileActivity.

this,VideoPlayer.class);

                      intent.putExtra("savepath", savepath);

                      startActivity(intent);

                }

            });

    }

}

2.视频文件播放

新建VideoPlayer.java类实现文件的播放,实现代码如下:

package com.sharpandroid.voide.activity;

 

public class VideoPlayer extends Activity{

    private SurfaceView surfaceView;

    private MediaPlayer mediaPlayer;

    private ImageButton playbutton;

    private ImageButton upbutton;

    private ImageButton nextbutton;

    private TextView playTime;

    private TextView totalTime;

    private SeekBar progressBar;

    private String path;

    private Handler mHandler = new Handler();

    private boolean flog=true;

    private static final String TAG = "VideoPlayActivity";

   

 

    public  void onCreate(Bundle savedInstanceState) {

         super.onCreate(savedInstanceState);

            setContentView(R.layout.video);

            Intent intent=this.getIntent();

            path=intent.getStringExtra("path");

        playTime=(TextView)findViewById(R.id.playTime);

        totalTime=(TextView)findViewById(R.id.totalTime);

        progressBar=(SeekBar)findViewById(R.id.progress_bar);

        surfaceView = (SurfaceView)this.findViewById(R.id.surfaceView);

        ButtonOnclickEnvent envent = new ButtonOnclickEnvent();

        playbutton = (ImageButton)this.findViewById(R.id.button_play);

        playbutton.setOnClickListener(envent);

        upbutton = (ImageButton)this.findViewById(R.id.button_up);

        upbutton.setOnClickListener(envent);

        nextbutton = (ImageButton)this.findViewById(R.id.button_next);

        nextbutton.setOnClickListener(envent);

        surfaceView.getHolder().setFixedSize(176, 144);  //设置分辨率

        surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_

PUSH_BUFFERS);

        mediaPlayer = new MediaPlayer();

        playbutton.setImageResource(R.drawable.button_play);

       

    }

   

    @Override

    protected void onStart() {

        super.onStart();

    }

 

    @Override

    protected void onPause() {

        if(mediaPlayer!=null){

            if(mediaPlayer.isPlaying()) mediaPlayer.pause();

        }

        super.onPause();

    }

 

    @Override

    protected void onResume() {

        if(mediaPlayer!=null){

            if(!mediaPlayer.isPlaying()) mediaPlayer.start();

        }

        super.onResume();

    }

    @Override

    protected void onDestroy() {

        if(mediaPlayer!=null){

            if(mediaPlayer.isPlaying()) mediaPlayer.stop();

            mediaPlayer.release();

        }

        super.onDestroy();

    }

   

   

public void play(){

   

 

    mediaPlayer.reset();

    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

    mediaPlayer.setDisplay(surfaceView.getHolder());

    try {

        mediaPlayer.setDataSource(path);

        mediaPlayer.prepare();

    }  catch (Exception e) {

        e.printStackTrace();

    }

    mediaPlayer.start();

   

  

}

    private class ButtonOnclickEnvent implements View.OnClickListener{

        @Override

        public void onClick(View v) {

            try {

                switch (v.getId()) {

                case R.id.button_play: //播放

                    if(mediaPlayer.isPlaying()){

                        mediaPlayer.pause();

                        playbutton.setImageResource(R.drawable.button_play);

                        flog=false;

                    }else{      

                       

                        if(flog)

                        {

                            play();

//                          new updateTime().start();

 

                       

                        }else{

                            mediaPlayer.start();

                        }

                        playbutton.setImageResource(R.drawable.button_

pause);

                        totalTime.setText(getTime(mediaPlayer.

getDuration()));       //获得音乐总时间

                     new updateTime().start();

                    }

                   

                    break;

 

                case R.id.button_up: //播放后退

                    mediaPlayer.seekTo(mediaPlayer.

getCurrentPosition()-200);

                    mediaPlayer.start();

                    break;

                   

                case R.id.button_next://播放快进

                   

                    mediaPlayer.seekTo(mediaPlayer.

getCurrentPosition()+200);

                    mediaPlayer.start();

                    break;

                }

            } catch (Exception e) {

                Log.e(TAG, e.toString());

            }          

        }           

    }

     

      class updateTime extends Thread{

         

            public void run() {

                while (true) {

                    if( mediaPlayer.isPlaying())

                        mHandler.post(new Runnable() {

                            public void run(){                             

                                try {

                                progressBar.setMax(mediaPlayer.

getDuration());

                                    progressBar.setProgress(mediaPlayer.

getCurrentPosition());//获得音乐播放的进度

                                   

                                    Log.i("A", String.valueOf(mediaPlayer.

getDuration()));

                                    Log.i("A", String.valueOf(mediaPlayer.

getCurrentPosition()));

                                    int pos = 0;

                                    try {

                                        pos = mediaPlayer.

getCurrentPosition();

//获得音乐播放的进度

                                    } catch (Exception e) {

                                        e.printStackTrace();

                                    }

                                    int min = (pos/1000)/60;

                                    int sec = (pos/1000)%60;

                                    if(sec<10)

                                        playTime.setText(""+min+":0"+sec);

//把音乐播放的进度,转换成时间

                                    else

                                        playTime.setText(""+min+":"+sec);

                                   

                                } catch (Exception e) {

                                    e.printStackTrace();

                                }                                  

                            }

                        });

                    try {

                        Thread.sleep(1000);

                    } catch (InterruptedException e) {

                        e.printStackTrace();

                    }

                    }

                }

            }

        public  String  getTime(int c)//将进度转变为时间

        { 

             String time;

             int length=c/1000;

            int a=  length/60;

             int b=length%60;

             time=String.valueOf(a)+":"+String.valueOf(b);

            return time;

        }

   

}

AndroidManifest.xml具体代码为:

<?xml version="1.0" encoding="UTF-8"?>

<manifest android:versionCode="1" android:versionName="1.0"

    package="com.sharpandroid_video.sharpandroid" xmlns:android="http:

//schemas.android.com/apk/res/android">

    <application android:icon="@drawable/icon" android:label=

"@string/app_name">

        <activity android:label="@string/app_name" android:name=

".BrowserActivity">

            <intent-filter>

                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.

LAUNCHER"/>

            </intent-filter>

        </activity>

        <activity android:name="com.sharpandroid_video.Player.

MediaPlayer"/>

        <activity android:name="com.sharpandroid_video.download.download.

activity.DownLoaderActivity"/>

        <activity android:name="com.sharpandroid_video.download.download.

activity.SaveFileActivity"/>

 

    </application>

    <uses-sdk android:minSdkVersion="7"/>

    <uses-permission android:name="android.permission.INTERNET"/>

    <!-- 在SDCard中创建与删除文件权限 -->

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYS

TEMS"/>

<!-- 往SDCard写入数据权限 -->

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAG

E"/>

</manifest>

转载地址:http://bumtx.baihongyu.com/

你可能感兴趣的文章
用Netscaler的Variable和Assignment来实现计数控制
查看>>
3,maven使用入门
查看>>
Android 高级自定义View实战
查看>>
IccFileHandler和IccRecords
查看>>
python安装mysql库
查看>>
谈谈我对P2P网络借贷的一些看法
查看>>
理解TCP/IP三次握手与四次挥手的正确姿势
查看>>
cephfs linux kernel client针对superblock操作流程的分析
查看>>
openstack学习笔记三 创建第一个实例
查看>>
day21 登录cookie
查看>>
1---基础(1)
查看>>
ORA-01102: cannot mount database in EXCLUSIVE mode
查看>>
Nginx+Tomcat简单集群配置
查看>>
Linux下Tomcat启动正常,但浏览器无法访问
查看>>
烂泥:mysql修改本地主机连接
查看>>
ubuntu 12.04.1升级至ubuntu 12.10出现gcc-4.7依赖库错误的解决办法
查看>>
烂泥:学习Nagios(三): NRPE安装及配置
查看>>
【新手教程】如何向App Store提交应用
查看>>
shell 实现memcache缓存命中率监控脚本
查看>>
使用ip6tables禁用ipv6
查看>>