Logcat报错如下12-28 12:15:01.684 1544-1561/? E/BatteryExternalStatsWorker: no controller energy info supplied for wifi
12-28 12:15:01.690 1544-1561/? E/KernelCpuSpeedReader: Failed to read cpu-freq: /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state (No such file or directory)
12-28 12:15:01.691 1544-1561/? E/BatteryExternalStatsWorker: modem info is invalid: ModemActivityInfo{ mTimestamp=0 mSleepTimeMs=0 mIdleTimeMs=0 mTxTimeMs[]=[0, 0, 0, 0, 0] mRxTimeMs=0 mEnergyUsed=0}
12-28 12:15:21.985 1397-1397/? I/qemu-props: start adbd ...
12-28 12:15:25.785 1392-1406/? D/hwcomposer: hw_composer sent 126 syncs in 60s
12-28 12:15:25.965 1384-1499/? V/EmulatedCamera_Camera: getCameraInfo
12-28 12:15:25.965 1384-1499/? V/EmulatedCamera_BaseCamera: getCameraInfo
12-28 12:15:25.967 1384-1499/? V/EmulatedCamera_Camera: getCameraInfo
12-28 12:15:25.967 1384-1499/? V/EmulatedCamera_BaseCamera: getCameraInfo
12-28 12:16:21.989 1397-1397/? I/qemu-props: start adbd ...
12-28 12:16:25.881 1392-1406/? D/hwcomposer: hw_composer sent 132 syncs in 60s
12-28 12:16:40.536 1474-19211/? I//system/bin/netd: gethostby*.getanswer: asked for "www.google.com IN AAAA", got type "A"
12-28 12:16:40.538 1544-19208/? D/NetworkMonitor/NetworkAgentInfo [MOBILE (LTE) - 100]: PROBE_DNS www.google.com 1246ms OK 14.215.177.38
12-28 12:16:40.542 1474-19210/? I//system/bin/netd: gethostby*.getanswer: asked for "connectivitycheck.gstatic.com IN AAAA", got type "A"
12-28 12:16:40.543 1544-19209/? D/NetworkMonitor/NetworkAgentInfo [MOBILE (LTE) - 100]: PROBE_DNS connectivitycheck.gstatic.com 1252ms OK 14.215.177.38
12-28 12:16:40.699 1544-19209/? D/NetworkMonitor/NetworkAgentInfo [MOBILE (LTE) - 100]: PROBE_HTTP http://connectivitycheck.gstatic.com/generate_204 Probe failed with exception java.net.SocketException: Connection reset
12-28 12:16:40.733 1544-19208/? D/NetworkMonitor/NetworkAgentInfo [MOBILE (LTE) - 100]: PROBE_HTTPS https://www.google.com/generate_204 Probe failed with exception javax.net.ssl.SSLPeerUnverifiedException: Hostname www.google.com not verified:
                                                                                            certificate: sha1/p16cZYG1UdK8hnR8KsGl1eLTSEc=
                                                                                            DN: CN=baidu.com,OU=service operation department.,O=BeiJing Baidu Netcom Science Technology Co.\, Ltd,L=beijing,ST=beijing,C=CN
                                                                                            subjectAltNames: [*.baidu.com, *.baifubao.com, *.baiducontent.com, *.baidustatic.com, *.bdstatic.com, *.bdimg.com, *.baifae.com, *.hao123.com, *.nuomi.com, *.chuanke.com, *.trustgo.com, *.baidubce.com, *.mipcdn.com, *.baidupcs.com, *.bcehost.com, *.aipage.com, *.aipage.cn, *.dlnel.com, *.bce.baidu.com, *.eyun.baidu.com, *.map.baidu.com, *.mbd.baidu.com, *.news.baidu.com, *.fanyi.baidu.com, *.im.baidu.com, *.safe.baidu.com, *.ssl2.duapps.com, baidu.com, baifubao.com, baifae.com, www.baidu.cn, www.baidu.com.cn, click.hm.baidu.com, log.hm.baidu.com, cm.pos.baidu.com, wn.pos.baidu.com, update.pan.baidu.com, mct.y.nuomi.com]
12-28 12:16:40.771 1544-1959/? D/NetworkMonitor/NetworkAgentInfo [MOBILE (LTE) - 100]: PROBE_FALLBACK http://www.google.com/gen_204 Probe failed with exception java.net.SocketException: Connection reset
12-28 12:16:40.771 1544-1619/? D/ConnectivityService: NetworkAgentInfo [MOBILE (LTE) - 100] validation failed
12-28 12:16:50.786 1544-1561/? E/BatteryExternalStatsWorker: modem info is invalid: ModemActivityInfo{ mTimestamp=0 mSleepTimeMs=0 mIdleTimeMs=0 mTxTimeMs[]=[0, 0, 0, 0, 0] mRxTimeMs=0 mEnergyUsed=0}
12-28 12:17:00.004 1544-1557/? E/memtrack: Couldn't load memtrack module
12-28 12:17:00.004 1544-1557/? W/android.os.Debug: failed to get memory consumption info: -1
12-28 12:17:10.685 11500-11540/? I/PlayCommon: [324] com.google.android.play.a.g.e(222): Preparing logs for uploading
12-28 12:17:10.688 11500-11540/? W/PlayCommon: [324] com.google.android.play.a.g.a(589): No account for auth token provided
12-28 12:17:10.688 11500-11540/? I/PlayCommon: [324] com.google.android.play.a.g.a(436): Connecting to server: https://play.googleapis.com/play/log?format=raw&proto_v2=true
12-28 12:17:21.999 1397-1397/? I/qemu-props: start adbd ...
12-28 12:17:25.975 1392-1406/? D/hwcomposer: hw_composer sent 126 syncs in 60s

解决方案 »

  1.   

    Mainactivitypublic class MainActivity extends AppCompatActivity {    private ListView mListView;
        //private ViewPager mViewPager;
        private static String URL="http://47.104.134.143/motels/";
        //private ViewPager mViewPager;
        private LoopPicture loopPicture;    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mListView = (ListView)findViewById(R.id.lv_main);
            new NewsAsyncTask().execute(URL);
            loopPicture = (LoopPicture)this.findViewById(R.id.loopPicture);
            //mViewPager = (ViewPager)findViewById(R.id.lv_viewPage);
           // mListView.addHeaderView(mViewPager);
            mListView.addHeaderView(loopPicture);        String[] imagesRes = new String[] {
                    "http://pic.sc.chinaz.com/files/pic/pic9/201604/apic20400.jpg",
                    "http://pics.sc.chinaz.com/files/pic/pic9/201602/apic19022.jpg",
                    "http://pics.sc.chinaz.com/files/pic/pic9/201603/fpic430.jpg",
                    "http://pics.sc.chinaz.com/files/pic/pic9/201605/apic20631.jpg"};
            loopPicture.setImageUrl(imagesRes, true);
    /*        int[] imagesRes = { R.drawable.a, R.drawable.b, R.drawable.c,
                    R.drawable.d, R.drawable.e };
            loopPicture.setImageRes(imagesRes, true);*/
            String[] titles = {"111111111111111111","2222222222222222",
                    "3333333333333","4444444444444","5555555555"};
            loopPicture.setImageTitle(titles);
        }    private List<NewsBean> getJsonDate(String url){
            List<NewsBean> newsBeanList = new ArrayList<>();
            try {
                String jsonString = readStream(new URL(url).openStream());
                JSONObject jsonObject;
                NewsBean newsBean;
                try {
                    jsonObject = new JSONObject(jsonString);
                    JSONArray jsonArray = jsonObject.getJSONArray("results");
                    for (int i = 0; i < jsonArray.length();i++){
                        jsonObject = jsonArray.getJSONObject(i);
                        newsBean = new NewsBean();
                        newsBean.newsIconUrl = jsonObject.getString("cover");
                        newsBean.newsTitle = jsonObject.getString("title");
                        newsBean.newsContent = jsonObject.getString("brief");
                        newsBean.newAly = jsonObject.getString("price");
                        newsBean.viewPager = jsonObject.getString("images");
                        newsBeanList.add(newsBean);
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }catch (IOException e){
                e.printStackTrace();
            }
            return newsBeanList;
        }    private String readStream(InputStream is){
            InputStreamReader isr;
            String result = "";
            try{
                String line = "";
                isr = new InputStreamReader(is,"utf-8");
                BufferedReader br = new BufferedReader(isr);
                while ((line = br.readLine())!= null){
                    result += line;
                }
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return result;
        }    class NewsAsyncTask extends AsyncTask<String,Void,List<NewsBean>>{
            @Override
            protected List<NewsBean> doInBackground(String... params) {
                return getJsonDate(params[0]);
            }        @Override
            protected void onPostExecute(List<NewsBean> newsBeans) {
                super.onPostExecute(newsBeans);
                NewsAdapter adapter = new NewsAdapter(MainActivity.this,newsBeans,mListView);
                mListView.setAdapter(adapter);
            }
        }
    }
      

  2.   

    Looppicturepublic class LoopPicture extends FrameLayout {
        private Context context;
        private DisplayImageOptions options;
        private ImageLoader mImageLoader;
        private String[] imageTitle; //展示图片的标题
        private List<ImageView> images;       //展示的图片
        private List<ImageView> imagesDots;     //展示图片位置的小圆点
        private int delayTime; //轮播图延迟换图的时间    private boolean isAutoPlay;
        private int currentItem;
        public Handler handler = new Handler();
        private ViewPager viewPager;
        private int imageLength;
        private LinearLayout dotLayout;
        private int titleLength;
        private TextView titleTV;
        private boolean hasTitle;    public LoopPicture(Context context) {
            this(context, null);
        }    public LoopPicture(Context context, AttributeSet attrs) {
            this(context, attrs, 0);
        }    public LoopPicture(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
            this.context = context;        //使用第三方库universal-imageloader 加载图片缓存
            initImageLoader(context);        //初始化数据
            initData();
        }    /**
         * 使用第三方库universal-imageloader 加载图片缓存
         */
        private void initImageLoader(Context context) {
            ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
                    context).threadPriority(Thread.NORM_PRIORITY - 2)
                    .denyCacheImageMultipleSizesInMemory()
                    .diskCacheFileNameGenerator(new Md5FileNameGenerator())
                    .tasksProcessingOrder(QueueProcessingType.LIFO)
                    .writeDebugLogs().build();
            ImageLoader.getInstance().init(config);
            mImageLoader = ImageLoader.getInstance();
        }    /**
         * 初始化轮播器中的数据
         */
        private void initData() {
            images = new ArrayList<ImageView>();
            imagesDots = new ArrayList<ImageView>();
            delayTime = 2000;
        }    /**
         * 提供接口:
         * 使用轮播器时设置图片(图片id)
         */
        public void setImageRes(int[] imagesRes, boolean hasTitle) {
            this.hasTitle = hasTitle;
            initView();
            initImgFromRes(imagesRes);
            startLoopPicture();
        }    /**
         * 提供接口:
         * 使用轮播器时设置图片(图片URl)
         */
        public void setImageUrl(String[] imageUrl, boolean hasTitle){
            this.hasTitle = hasTitle;
            initView();
            initImgFromUrl(imageUrl);
            startLoopPicture();
        }    /**
         * 提供接口:
         * 使用轮播器时设置图片的标题
         */
        public void setImageTitle(String[] imageTitle){
            this.imageTitle = imageTitle;
        }    /**
         * 初始化轮播器布局
         */
        private void initView() {
            images.clear();
            View view = LayoutInflater.from(context).inflate(R.layout.loop_pictures, this, true);
            viewPager = (ViewPager)view.findViewById(R.id.vp);
            dotLayout = (LinearLayout) view.findViewById(R.id.ll_dot);
            titleTV = (TextView) view.findViewById(R.id.tv_title);
            dotLayout.removeAllViews();
        }    /**
         * 初始化轮播器的图片(图片URL)
         * 使用第三方类库universal-imageloader 加载图片缓存
         */
        private void initImgFromUrl(String[] imageUrl) {
            imageLength = imageUrl.length;
            for(int i = 0;i<imageLength;i++){
                ImageView dotView = new ImageView(context);
                LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                        LinearLayout.LayoutParams.WRAP_CONTENT,
                        LinearLayout.LayoutParams.WRAP_CONTENT);
                params.leftMargin = 5;
                params.rightMargin = 5;
                dotView.setImageResource(R.drawable.dot_blur);
                dotLayout.addView(dotView, params);
                imagesDots.add(dotView);
            }
            imagesDots.get(0).setImageResource(R.drawable.dot_focus);        //universal-imageloader 加载图片缓存
            for(int i = 0; i <= imageLength + 1; i++){
                ImageView imageView = new ImageView(context);
                imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                imageView.setBackgroundResource(R.drawable.loading);
                if(i == 0){
                    mImageLoader.displayImage(imageUrl[imageLength - 1], imageView);
                } else if(i == imageLength + 1){
                    mImageLoader.displayImage(imageUrl[0], imageView);
                } else {
                    mImageLoader.displayImage(imageUrl[i - 1], imageView);
                }
                images.add(imageView);
            }
        }    /**
         * 初始化轮播器的图片(图片id)
         */
        private void initImgFromRes(int[] imagesRes) {
            imageLength = imagesRes.length;
            for(int i = 0; i < imageLength; i++){
                ImageView dotView = new ImageView(context);
                LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                        LinearLayout.LayoutParams.WRAP_CONTENT,
                        LinearLayout.LayoutParams.WRAP_CONTENT);
                params.leftMargin = 5;
                params.rightMargin = 5;
                dotView.setImageResource(R.drawable.dot_blur);
                dotLayout.addView(dotView, params);
                imagesDots.add(dotView);
            }
            //设置第一张轮播图的小圆点为选中状态
            imagesDots.get(0).setImageResource(R.drawable.dot_focus);        for(int i = 0;i<= imageLength+1 ; i++){
                ImageView imageView = new ImageView(context);
                imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                imageView.setBackgroundResource(R.drawable.loading);
                if(i == 0){
                    imageView.setImageResource(imagesRes[imageLength - 1]);
                } else if (i == imageLength + 1){
                    imageView.setImageResource(imagesRes[0]);
                } else {
                    imageView.setImageResource(imagesRes[i - 1]);
                }
                images.add(imageView);
            }
        }    /**
         * 设置ViewPager,开启轮播器
         */
        private void startLoopPicture(){
            viewPager.setAdapter(new LoopPicturesAdapter());
            viewPager.setFocusable(true);
            viewPager.setCurrentItem(1);
            currentItem = 1;
            viewPager.addOnPageChangeListener(new LoopPicturesListener());        //开启轮播器
            isAutoPlay = true;
            handler.postDelayed(task, 2000);
        }
        private final Runnable task = new Runnable() {
            @Override
            public void run() {
                if (isAutoPlay) {
                    currentItem = currentItem % (imageLength + 1) + 1;
                    if (currentItem == 1) {
                        viewPager.setCurrentItem(currentItem, false);
                        handler.post(task);
                    } else {
                        viewPager.setCurrentItem(currentItem);
                        handler.postDelayed(task, 3000);
                    }
                } else {
                    handler.postDelayed(task, 5000);
                }
            }
        };
        class LoopPicturesAdapter extends PagerAdapter{        @Override
            public int getCount() {
                return images.size();
            }        @Override
            public boolean isViewFromObject(View view, Object object) {
                return view == object;
            }        @Override
            public Object instantiateItem(ViewGroup container, int position) {
                View view = images.get(position);
                container.addView(view);
                return view;
            }        @Override
            public void destroyItem(ViewGroup container, int position, Object object) {
                container.removeView((View)object);
            }
        }    class LoopPicturesListener implements OnPageChangeListener{        @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {        }        @Override
            public void onPageSelected(int position) {
                for(int i = 0; i<imagesDots.size();i++){
                    if(i == position - 1){
                        imagesDots.get(i).setImageResource(R.drawable.dot_focus);
                        if(hasTitle) {
                            titleTV.setText(imageTitle[i]);
                        }
                    } else {
                        imagesDots.get(i).setImageResource(R.drawable.dot_blur);
                    }
                }        }        @Override
            public void onPageScrollStateChanged(int state) {
                switch (state){
                    case 1:
                        isAutoPlay = false;
                        break;
                    case 2:
                        isAutoPlay = true;
                        break;
                    case 0:
                        if (viewPager.getCurrentItem() == 0) {
                            viewPager.setCurrentItem(imageLength, false);
                        } else if (viewPager.getCurrentItem() == imageLength + 1) {
                            viewPager.setCurrentItem(1, false);
                        }
                        currentItem = viewPager.getCurrentItem();
                        isAutoPlay = true;
                        break;
                }        }
        }
    }
      

  3.   

    no controller energy info supplied for wifi
    你是用的url加载图片  是不是没联网获取不到图片
      

  4.   

    LOG 信息不知道那一条才是你 APP 的,确定这些LOG 是你APP报错信息吗? 
      

  5.   

    12-28 12:16:40.771 1544-1619/? D/ConnectivityService: NetworkAgentInfo [MOBILE (LTE) - 100] validation failed
    网络不通???
      

  6.   

    网络异常不会crash,异常log没给全?