zoukankan      html  css  js  c++  java
  • 团队冲刺第五天

    1、这次自己实现的是在地图进行运动轨迹的同时。得到运动的总距离。对于时间也可以获取到。但是速度方面有一点欠缺。还需要改进和增强。明天准备获取得到运动的每一部分的具体时间,得到速度。舒适速度和平均速度。今天变更的代码操作如下图所示;

    public String getDistance(LatLng start,LatLng end){
            double lat1 = (Math.PI/180)*start.latitude;
            double lat2 = (Math.PI/180)*end.latitude;
    
            double lon1 = (Math.PI/180)*start.longitude;
            double lon2 = (Math.PI/180)*end.longitude;
            Toast.makeText(DynamicDemo.this,String.valueOf(lat1), Toast.LENGTH_SHORT).show();
            Toast.makeText(DynamicDemo.this,String.valueOf(lon1), Toast.LENGTH_SHORT).show();
            Toast.makeText(DynamicDemo.this,String.valueOf(lat2), Toast.LENGTH_SHORT).show();
            Toast.makeText(DynamicDemo.this,String.valueOf(lon2), Toast.LENGTH_SHORT).show();
    
            //地球半径
            double R = 6371;
    
            //两点间距离 km,如果想要米的话,结果*1000
            double d =  Math.acos(Math.sin(lat1)*Math.sin(lat2)+Math.cos(lat1)*Math.cos(lat2)*Math.cos(lon2-lon1))*R;
            if(d<1)
                return (int)d*1000+"m";
            else
                return String.format("%.2f",d)+"km";
        }

    2、今天完成了APP首页的设计,并且获取到登录者的信息,让其显示在用户基础信息的位置,包括头像和用户名。还有就是对闹钟功能的基本设计及思路,完成了添加闹钟的界面设计,明天再继续完成详细功能。下面是主要代码和截图

    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.home);
            muserOperator = new UserOperator(this);
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                    this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
            drawer.addDrawerListener(toggle);
            toggle.syncState();
            NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
            navigationView.setNavigationItemSelectedListener(this);
    //        LayoutInflater layoutInflater = this.getLayoutInflater();
    //        view =layoutInflater.inflate(R.layout.home_header,null);
    //        imageView=(ImageView)view.findViewById(R.id.userimageView);
    //        textView=(TextView) view.findViewById(R.id.usernameView);
            Intent intent = getIntent();//获取Intent对象
            String username = intent.getStringExtra("username");
            textView=navigationView.getHeaderView(0).findViewById(R.id.usernameView);
            imageView=navigationView.getHeaderView(0).findViewById(R.id.userimageView);
            User bean = muserOperator.isExit(username);
            String userpicture = bean.userpicture;
    
            //Log.d("volley", userpicture);
            textView.setText(username);
                Bitmap bitmap= BitmapFactory.decodeFile(userpicture);
    
                imageView.setImageBitmap(bitmap);
            fm = this.getSupportFragmentManager();
            switchFragment("首页");
        }

     3.今天继续昨天的内容,完成了音乐适配器的相关代码,增加了SD卡音乐信息的读取的学习和代码书写。并成功读取手机SD里面的歌曲信息。明天准备完成手机SD音乐的播放。

    package com.example.keeprunning6;
    
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.TextView;
    
    import java.util.ArrayList;
    
    public class LocalMusicAdapter extends BaseAdapter {
    
        private Context context;
        private LayoutInflater inflater;
        private ArrayList<LocalMusicBean>list;
    
        public LocalMusicAdapter(Context context,ArrayList<LocalMusicBean>list){
            this.context=context;
            this.list=list;
            this.inflater=LayoutInflater.from(context);
        }
        @Override
        public int getCount() {
            return list.size();
        }
    
        @Override
        public Object getItem(int position) {
            return list.get(position);
        }
    
        @Override
        public long getItemId(int position) {
            return position;
        }
    
        static class ViewHolder{
            public TextView music_num,music_song,music_singer,music_album,music_durtion;
    
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder viewHolder = null;
            if (convertView == null) {
                convertView = inflater.inflate(R.layout.item_local_music, null);
                viewHolder = new ViewHolder();
                viewHolder.music_num = convertView.findViewById(R.id.item_local_music_num);
                viewHolder.music_song=convertView.findViewById(R.id.item_local_music_song);
                viewHolder.music_singer=convertView.findViewById(R.id.item_local_music_singer);
                viewHolder.music_album=convertView.findViewById(R.id.item_local_music_album);
                viewHolder.music_durtion=convertView.findViewById(R.id.item_local_music_durtion);
                convertView.setTag(viewHolder);
            }else{
                viewHolder=(ViewHolder)convertView.getTag();
            }
            LocalMusicBean bean=list.get(position);
            viewHolder.music_num.setText((position+1)+"");
            viewHolder.music_song.setText(bean.getSong());
            viewHolder.music_singer.setText(bean.getSinger());
            viewHolder.music_album.setText(bean.getAlbum());
            viewHolder.music_durtion.setText(bean.getDuration());
            return convertView;
        }
    }
    package com.example.keeprunning6;
    
    import android.Manifest;
    import android.content.ContentResolver;
    import android.content.pm.PackageManager;
    import android.database.Cursor;
    import android.net.Uri;
    import android.os.Bundle;
    import android.provider.MediaStore;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ListView;
    import android.widget.TextView;
    
    import androidx.appcompat.app.AppCompatActivity;
    import androidx.core.app.ActivityCompat;
    import androidx.core.content.ContextCompat;
    
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    
    public class MainActivity extends AppCompatActivity {
    
        //音乐列表试图
        private ListView listView;
        //音乐列表
        private ArrayList<LocalMusicBean> list=new ArrayList<>();
        //当前播放的音乐以及歌手
        private TextView now_music_song,now_music_singer,now_music_duration,now_music_ablum;
    
        private LocalMusicAdapter adapter;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
    
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            listView=findViewById(R.id.music_list);
            now_music_song=findViewById(R.id.local_music_botton_tv_song);
            now_music_singer=findViewById(R.id.item_local_music_singer);
    
            //自定义数据
    
            adapter=new LocalMusicAdapter(MainActivity.this,list);
            listView.setAdapter(adapter);
    
            //加载本地数据源
            localMusicData();
    
            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    //上面的position参数是歌曲在列表中的索引
    
                    //播放选中的音乐
    
                    //切换下方当前音乐信息
                    now_music_song.setText(list.get(position).getSong());
                    now_music_singer.setText(list.get(position).getSinger());
    
                }
            });
    
        }
    
        private void localMusicData(){
            //加载本地存储当中的音乐mp3文件到集合当中
    
            //1.获取ContentResolver对象
            ContentResolver resolver=getContentResolver();
            //2.获取本地音乐存储的Uri地址
            Uri uri= MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
            //3.开始查询地址
            Cursor cursor=resolver.query(uri,null,null,null,null);
            //4.遍历Cursor
            int id=0;
            while(cursor.moveToNext()){
                String song=cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
                String singer=cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
                String album=cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));
                id++;
                //歌曲编号变成String类型
                String sid=String.valueOf(id);
                String path=cursor.getString(cursor.getColumnIndex((MediaStore.Audio.Media.DATA)));
               // String duration=cursor.getString(cursor.getColumnIndex((MediaStore.Audio.Media.DURATION)));
               int duration=cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION));
                SimpleDateFormat sdf=new SimpleDateFormat("mm:ss");
                String time = formatTime(duration);
    
                //将一行当中的数据封装到对象当中
                LocalMusicBean bean=new LocalMusicBean(sid,song,singer,album,time,path);
                list.add(bean);
    
            }
            //数据变化,提示适配器更新
            adapter.notifyDataSetChanged();
    
        }
    
        //    转换歌曲时间的格式
        public static String formatTime(int time) {
            if (time / 1000 % 60 < 10) {
                String tt = time / 1000 / 60 + ":0" + time / 1000 % 60;
                return tt;
            } else {
                String tt = time / 1000 / 60 + ":" + time / 1000 % 60;
                return tt;
            }
        }
    
    
    }
  • 相关阅读:
    实用机器学习 跟李沐学AI
    Explicitly drop temp table or let SQL Server handle it
    dotnettransformxdt and FatAntelope
    QQ拼音输入法 禁用模糊音
    (技术八卦)Java VS RoR
    Ruby on rails开发从头来(windows)(七)创建在线购物页面
    Ruby on rails开发从头来(windows)(十三)订单(Order)
    Ruby on rails开发从头来(windows)(十一)订单(Order)
    新员工自缢身亡,华为又站到了风口浪尖
    死亡汽油弹(Napalm Death)乐队的视频和来中国演出的消息
  • 原文地址:https://www.cnblogs.com/yumazemadui/p/12733457.html
Copyright © 2011-2022 走看看