Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.mobile.android > #56860 > unrolled thread

Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)

Started by Arlen Holder <a%rlenh.older@no.spam.net>
First post2018-10-26 22:45 +0000
Last post2018-11-14 01:52 +0000
Articles 20 on this page of 128 — 11 participants

Back to article view | Back to comp.mobile.android


Contents

  Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen    Holder <a%rlenh.older@no.spam.net> - 2018-10-26 22:45 +0000
    Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Diesel <me@privacy.net> - 2018-10-27 05:39 +0000
      Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen    Holder <a%rlenh.older@no.spam.net> - 2018-10-27 08:38 +0000
        Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Diesel <me@privacy.net> - 2018-10-31 05:51 +0000
          Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) "BurfordTJustice" <burford/associate@uk.MI15> - 2018-10-31 07:12 -0400
            Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Diesel <me@privacy.net> - 2018-11-01 23:44 +0000
    Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <Billaboard@gmail.com> - 2018-10-30 00:14 +0000
      Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen    Holder <a%rlenh.older@no.spam.net> - 2018-10-30 19:51 +0000
        Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen    Holder <a%rlenh.older@no.spam.net> - 2018-10-30 20:13 +0000
          Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Diesel <me@privacy.net> - 2018-10-31 05:51 +0000
            Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen    Holder <a%rlenh.older@no.spam.net> - 2018-10-31 07:26 +0000
              Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <billaboard@gmail.com> - 2018-11-01 12:21 +0000
                Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-02 03:04 +0000
              Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Diesel <me@privacy.net> - 2018-11-01 23:44 +0000
                Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-02 06:29 +0000
                  Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Diesel <me@privacy.net> - 2018-11-02 08:03 +0000
                    Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-02 22:01 +0000
                      Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Diesel <me@privacy.net> - 2018-11-03 02:00 +0000
                        Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-04 06:56 +0000
                          Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-04 07:50 +0000
                            Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Diesel <me@privacy.net> - 2018-11-04 08:46 +0000
                              Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-05 17:04 +0000
                                Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-05 18:32 +0000
                                  Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-05 20:47 +0000
                                    Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-05 23:43 +0000
                          Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Diesel <me@privacy.net> - 2018-11-04 08:46 +0000
                            Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-06 03:20 +0000
                              Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <billaboard@gmail.com> - 2018-11-06 16:58 +0000
                                Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-06 21:43 +0000
                                  Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <Billaboard@gmail.com> - 2018-11-07 16:39 +0000
                                    Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-08 10:24 +0000
                                      Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <Billaboard@gmail.com> - 2018-11-08 17:45 +0000
                                        Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-08 19:27 +0000
                                          Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <Billaboard@gmail.com> - 2018-11-08 20:43 +0000
                                            Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-09 11:40 +0000
                                              Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-10 10:34 +0000
                                                Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <Billaboard@gmail.com> - 2018-11-12 10:20 +0000
                                                  Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <billaboard@gmail.com> - 2018-11-12 12:37 +0000
                                                    Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-12 20:27 +0000
                                                      Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <Billaboard@gmail.com> - 2018-11-12 23:55 +0000
                                                        Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <Billaboard@gmail.com> - 2018-11-14 17:55 +0000
                                                          Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen michael holder <arlen_michael_holder@example.com> - 2018-11-15 05:56 +0000
                                                            Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen michael holder <arlen_michael_holder@example.com> - 2018-11-15 07:02 +0000
                                                            Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <Billaboard@gmail.com> - 2018-11-16 00:19 +0000
                                                              Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen michael holder <arlen_michael_holder@example.com> - 2018-11-16 19:29 +0000
                                                                Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <Billaboard@gmail.com> - 2018-11-17 15:37 +0000
                                                                  Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen michael holder <arlen_michael_holder@example.com> - 2018-11-17 19:49 +0000
                                                                    Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <Billaboard@gmail.com> - 2018-11-18 20:14 +0000
                                                                      Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen michael holder <arlen_michael_holder@example.com> - 2018-11-19 03:36 +0000
                                                                        Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <Billaboard@gmail.com> - 2018-11-19 09:43 +0000
                                                                          Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen michael holder <arlen_michael_holder@example.com> - 2018-11-19 20:43 +0000
                                                                            Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen michael holder <arlen_michael_holder@example.com> - 2018-11-20 05:50 +0000
                                                                              Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <billaboard@gmail.com> - 2018-11-21 10:27 +0000
                                                                                Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen michael holder <arlen_michael_holder@example.com> - 2018-11-21 17:40 +0000
                                                                                Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen michael holder <arlen_michael_holder@example.com> - 2018-11-21 17:42 +0000
                                                                                  Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <Billaboard@gmail.com> - 2018-11-21 20:13 +0000
                                                                                    Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen michael holder <arlen_michael_holder@example.com> - 2018-11-22 07:15 +0000
                                                                                      Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen michael holder <arlen_michael_holder@example.com> - 2018-11-22 07:49 +0000
                                                                                      Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <billaboard@gmail.com> - 2018-11-23 20:47 +0000
                                                                                        Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <Billaboard@gmail.com> - 2018-11-29 10:05 +0000
                                                                                          Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen holder <arlen@holder.com> - 2018-11-30 19:48 +0000
                                                                                            Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen holder <arlen@holder.com> - 2018-11-30 21:38 +0000
                                                                                              Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen holder <arlen@holder.com> - 2018-11-30 21:58 +0000
                                                                                              Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen holder <arlen@holder.com> - 2018-11-30 21:59 +0000
                                                                                              Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen holder <arlen@holder.com> - 2018-11-30 22:00 +0000
                                                                                              Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen holder <arlen@holder.com> - 2018-11-30 22:01 +0000
                                                                                              Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen holder <arlen@holder.com> - 2018-11-30 22:02 +0000
                                                                                              Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen holder <arlen@arlen.com> - 2018-12-01 03:09 +0000
                                                                                              Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen holder <arlen@arlen.com> - 2018-12-01 07:40 +0000
                                                                                              Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen holder <arlen@arlen.com> - 2018-12-02 03:22 +0000
                                                                                        Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen holder <arlen@holder.com> - 2018-11-30 19:22 +0000
                                                                                          Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <Billaboard@gmail.com> - 2018-12-01 16:43 +0000
                                                                                            Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen holder <arlen@holder.com> - 2018-12-01 19:25 +0000
                                                                                              Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <Billaboard@gmail.com> - 2018-12-03 18:20 +0000
                                                                                                Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <Billaboard@gmail.com> - 2018-12-07 16:24 +0000
                                                        Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen michael holder <arlen_michael_holder@example.com> - 2018-11-15 01:24 +0000
                                                          Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen michael holder <arlen_michael_holder@example.com> - 2018-11-15 22:36 +0000
                                              Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <Billaboard@gmail.com> - 2018-11-10 10:43 +0000
                                                Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-10 11:36 +0000
                                                  Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-10 11:50 +0000
                                                    Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-12 06:04 +0000
                                                      Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen michael holder <arlen_michael_holder@example.com> - 2018-11-15 22:43 +0000
                                                Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen michael holder <arlen_michael_holder@example.com> - 2018-11-16 05:08 +0000
                                                  Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <Billaboard@gmail.com> - 2018-11-16 15:33 +0000
                                                    Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen michael holder <arlen_michael_holder@example.com> - 2018-11-16 18:52 +0000
                                                      Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen michael holder <arlen_michael_holder@example.com> - 2018-11-16 20:08 +0000
                                                      Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <Billaboard@gmail.com> - 2018-11-17 00:04 +0000
                                                        Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen michael holder <arlen_michael_holder@example.com> - 2018-11-17 02:38 +0000
                                                          Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen michael holder <arlen_michael_holder@example.com> - 2018-11-17 05:25 +0000
                                                      Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <Billaboard@gmail.com> - 2018-11-21 17:04 +0000
                                                        Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen michael holder <arlen_michael_holder@example.com> - 2018-11-22 07:11 +0000
                                                          Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <Billaboard@gmail.com> - 2018-11-24 23:48 +0000
                                                Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) arlen michael holder <arlen_michael_holder@example.com> - 2018-11-16 05:08 +0000
        Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Diesel <me@privacy.net> - 2018-10-31 05:51 +0000
          Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) "BurfordTJustice" <burford/associate@uk.MI15> - 2018-10-31 07:11 -0400
        Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <Billaboard@gmail.com> - 2018-10-31 10:54 +0000
          Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-02 03:33 +0000
            Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <billaboard@gmail.com> - 2018-11-02 19:51 +0000
              Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <Billaboard@gmail.com> - 2018-11-02 20:07 +0000
              Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-02 23:16 +0000
                Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <Billaboard@gmail.com> - 2018-11-03 00:03 +0000
                  Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-03 01:44 +0000
                Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Diesel <me@privacy.net> - 2018-11-03 02:00 +0000
                  Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <Billaboard@gmail.com> - 2018-11-03 11:56 +0000
                    Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) "Apd" <not@all.invalid> - 2018-11-03 15:31 +0000
                      Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Bill <Billaboard@gmail.com> - 2018-11-03 18:45 +0000
                    Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Diesel <me@privacy.net> - 2018-11-04 08:46 +0000
                      Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-06 01:27 +0000
                        Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Diesel <me@privacy.net> - 2018-11-06 15:33 +0000
                    Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-06 02:56 +0000
                      Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-06 03:20 +0000
                  Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-06 00:57 +0000
                    Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Diesel <me@privacy.net> - 2018-11-06 15:33 +0000
                      Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-06 19:06 +0000
          Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Diesel <me@privacy.net> - 2018-11-02 08:03 +0000
            Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-06 09:26 +0000
              Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-08 09:59 +0000
                Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Diesel <me@privacy.net> - 2018-11-10 03:24 +0000
                  Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-10 05:04 +0000
                    Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Diesel <me@privacy.net> - 2018-11-10 07:04 +0000
                      Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-10 09:57 +0000
                        Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Diesel <me@privacy.net> - 2018-11-12 07:08 +0000
                          Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-12 21:19 +0000
                            Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Diesel <me@privacy.net> - 2018-11-12 23:58 +0000
                              Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-15 01:55 +0000
                            Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) nospam <nospam@nospam.invalid> - 2018-11-12 20:25 -0500
                              Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour) Diesel <me@privacy.net> - 2018-11-13 13:05 +0000
                              Re: Report: My first "hello world" using Android Studio freeware on Windows worked just fine (in about an hour)  Arlen_Holder <a%rle%20nh.older@no.spam.net> - 2018-11-14 01:52 +0000

Page 5 of 7 — ← Prev page 1 2 3 4 [5] 6 7  Next page →


#57394

From Arlen_Holder <a%rle%20nh.older@no.spam.net>
Date2018-11-12 06:04 +0000
Message-ID<psb555$29g$1@news.mixmin.net>
In reply to#57367
On Sat, 10 Nov 2018 11:50:14 -0000 (UTC), Arlen_Holder wrote:

> I'll let you know when/if I have something to report that is of general use
> to you and anyone following in our footsteps.

Hi Bill,

Today I ran app06 successfully, after a few classic debugging issues:
o <http://www.bild.me/bild.php?file=1682135androidstudio61.jpg>

Android Studio For Beginners Part 1,2,3,4 by Bill Butterfield, Jun 13, 2017 
o <https://youtu.be/dFlPARW5IX8> (part 1) <=== app03 is this video
o <https://youtu.be/6ow3L39Wxmg> (part 2) <=== app05 is this video
o <https://youtu.be/rdGpT1pIJlw> (part 3) <=== app06 is this video
o <https://youtu.be/bu5Y3uZ6LLM> (part 4)

Download these three pictures first (which are shrunk to 640x480):
o garlic.jpg = <http://www.bild.me/bild.php?file=1017694garlic.jpg>
o tomato.jpg = <http://www.bild.me/bild.php?file=2917965tomato.jpg>
o banana.jpg = <http://www.bild.me/bild.php?file=3954162banana.jpg>
Note: He used peach, tomato, squash (I used garlic, tomato, banana).

He's using an older version (or maybe it's the Mac) but there is no Save:
o When he clicks the "Save" icon, we don't have that icon in 3.2.1 Windows

He's using an older version so note that the "ListView" is NOT in:
o Containers > ListView
But, instead, "ListView" is located, for us, in:
o Legacy > ListView
But then there is also "RecyclerView" (which I didn't use):
o Containers > RecyclerView

He's using an older version of Android Studio on the Mac so note that the "match_parent" doesn't exist as an option in the GUI but it is the default in the text file so just skip the GUI part when he matches that constraint.

When he creates the automatic "itemAdapter", our variables differ slightly:
o The 3.2.1 adapter automation uses "position" while he uses "i"
He's using an older version (or maybe it's the Mac) but there is no Save:
o When he clicks the "Save" icon, we don't have that icon in 3.2.1 Windows

He's using an older version so note that the "ListView" is NOT in:
o Containers > ListView
But, instead, "ListView" is located in:
o Legacy > ListView
But then there is "RecyclerView"
o Containers > RecyclerView

He's using an older version so note that the "match_parent" doesn't exist 
as an option in the GUI but it is the default in the text file so skip 
the GUI part when he matches that constraint.

When he creates the automatic "itemAdapter", variables differ:
o The 3.2.1 adapter automation uses "position" while he uses "i"
  So I did a global search & replace on "position" to convert to "i"
o The 3.2.1 adapter automation uses "parent" while he uses "viewGroup"
o The 3.2.1 adapter automation uses "convertView" while he uses "view"

Notice this line with two different variables!
 public void onItemClick(AdapterView<?> parent, View view, int i, long l) {
 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
I ended up manually editing to use his variables of "i" and "l".

When he creates an images view, the menus are slightly different:
o He uses Palette > Images > ImagesView
o We use Palette > Widgets > ImagesView
  or
o We use Palette > Common > ImagesView

Here is the code if anyone is interested in following in our footsteps.
============================================================================
java:
 C:\tmp\android\app06\app\src\main\java\com\kiss\app06\DetailActivity.java 
 C:\tmp\android\app06\app\src\main\java\com\kiss\app06\ItemAdapter.java
 C:\tmp\android\app06\app\src\main\java\com\kiss\app06\MainActivity.java

res:
 C:\tmp\android\app06\app\src\main\res\layout\activity_detail.xml 
 C:\tmp\android\app06\app\src\main\res\layout\activity_main.xml 
 C:\tmp\android\app06\app\src\main\res\layout\my_listview_detail.xml

values:
 C:\tmp\android\app06\app\src\main\res\values\colors.xml 
 C:\tmp\android\app06\app\src\main\res\values\strings.xml
 C:\tmp\android\app06\app\src\main\res\values\styles.xml
============================================================================
C:\tmp\android\app06\app\src\main\java\com\kiss\app06\DetailActivity.java 
package com.kiss.app06;

import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Display;
import android.widget.ImageView;

public class DetailActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);

        Intent in = getIntent();
        int index = in.getIntExtra("com.kiss.app06.ITEM_INDEX", -1);

        if (index > -1) {
            int pic = getImg(index);
            ImageView img = (ImageView) findViewById(R.id.imageView);
            scaleImg(img, pic);
        }

    }

    private int getImg(int index) {
        switch (index) {
            case 0: return R.drawable.garlic;
            case 1: return R.drawable.tomato;
            case 2: return R.drawable.banana;
            default: return -1;
        }
    }

    private void scaleImg(ImageView img, int pic) {
        Display screen = getWindowManager().getDefaultDisplay();
        BitmapFactory .Options options = new BitmapFactory.Options();

        options.inJustDecodeBounds = true;
        BitmapFactory.decodeResource(getResources(), pic, options);

        int imgWidth = options.outWidth;
        int screenWidth = screen.getWidth();

        if (imgWidth > screenWidth) {
            int ratio = Math.round( (float) imgWidth / (float)screenWidth);
            options.inSampleSize = ratio;
        }

        options.inJustDecodeBounds = false;
        Bitmap scaledImg = BitmapFactory.decodeResource(getResources(), pic, options);
        img.setImageBitmap(scaledImg);
    }
}
============================================================================
C:\tmp\android\app06\app\src\main\java\com\kiss\app06\ItemAdapter.java
package com.kiss.app06;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class ItemAdapter extends BaseAdapter {

    LayoutInflater  mInflator;
    String[] items;
    String[] prices;
    String[] descriptions;

    public ItemAdapter(Context c, String[] i, String[] p, String[] d) {
        items = i;
        prices = p;
        descriptions = d;
        mInflator = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        return items.length;
    }

    @Override
    public Object getItem(int i) {
        return items[i];
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {

        View v = mInflator.inflate(R.layout.my_listview_detail, null);
        TextView nameTextView = (TextView) v.findViewById(R.id.nameTextView);
        TextView descriptionTextView = (TextView) v.findViewById(R.id.descriptionTextView);
        TextView priceTextView = (TextView) v.findViewById(R.id.priceTextView);

        String name = items[i];
        String desc = descriptions[i];
        String cost = prices[i];

        nameTextView.setText(name);
        descriptionTextView.setText(desc);
        priceTextView.setText(cost);

        return v;
    }
}
============================================================================
 C:\tmp\android\app06\app\src\main\java\com\kiss\app06\MainActivity.java
package com.kiss.app06;

import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;

public class MainActivity extends AppCompatActivity {

    ListView myListView;
    String[] items;
    String[] prices;
    String[] descriptions;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Resources res = getResources();
        myListView = (ListView) findViewById(R.id.myListView);
        items = res.getStringArray(R.array.items);
        prices = res.getStringArray(R.array.prices);
        descriptions = res.getStringArray(R.array.descriptions);

        ItemAdapter itemAdapter = new ItemAdapter(this, items, prices, descriptions);
        myListView.setAdapter(itemAdapter);

        myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int i, long l) {
                Intent showDetailActivity = new Intent(getApplicationContext(), DetailActivity.class);
                showDetailActivity.putExtra("com.kiss.app06.ITEM_INDEX", i);
                startActivity(showDetailActivity);
            }
        });


    }
}
============================================================================
 C:\tmp\android\app06\app\src\main\res\layout\activity_detail.xml 
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".DetailActivity">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@mipmap/ic_launcher" />
</android.support.constraint.ConstraintLayout>
============================================================================
 C:\tmp\android\app06\app\src\main\res\layout\activity_main.xml 
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <ListView
        android:id="@+id/myListView"
        android:layout_width="match_parent"
        android:layout_height="495dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        tools:layout_editor_absoluteY="8dp" />
</android.support.constraint.ConstraintLayout>
============================================================================
 C:\tmp\android\app06\app\src\main\res\layout\my_listview_detail.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">

    <TextView
        android:id="@+id/nameTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginStart="48dp"
        android:layout_marginTop="45dp"
        android:text="Name"
        android:textSize="24sp" />

    <TextView
        android:id="@+id/descriptionTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/nameTextView"
        android:layout_alignParentStart="true"
        android:layout_marginStart="45dp"
        android:layout_marginTop="1dp"
        android:text="Description" />

    <TextView
        android:id="@+id/priceTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/nameTextView"
        android:layout_alignParentEnd="true"
        android:layout_marginEnd="27dp"
        android:text="Price"
        android:textSize="24sp" />
</RelativeLayout>
============================================================================
 C:\tmp\android\app06\app\src\main\res\values\colors.xml 
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#008577</color>
    <color name="colorPrimaryDark">#00574B</color>
    <color name="colorAccent">#D81B60</color>
</resources>
============================================================================
 C:\tmp\android\app06\app\src\main\res\values\strings.xml
<resources>
    <string name="app_name">app06</string>

    <string-array name="items">
        <item>garlic</item>
        <item>tomato</item>
        <item>banana></item>
    </string-array>

    <string-array name="prices">
        <item>$0.99</item>
        <item>$1.49</item>
        <item>$0.89</item>
    </string-array>

    <string-array name="descriptions">
        <item>Fresh garlic</item>
        <item>Fresh tomato</item>
        <item>Fresh banana</item>
    </string-array>
</resources>

============================================================================
 C:\tmp\android\app06\app\src\main\res\values\styles.xml
<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

</resources>
============================================================================
I'm not sure what app07 will be as I think the 4th video is out of context
for what I'm planing on doing (ring an alarm as a 10-minute timer).

[toc] | [prev] | [next] | [standalone]


#57565

Fromarlen michael holder <arlen_michael_holder@example.com>
Date2018-11-15 22:43 +0000
Message-ID<psksqk$33c$1@news.mixmin.net>
In reply to#57394
On Mon, 12 Nov 2018 06:04:22 -0000 (UTC), Arlen_Holder wrote:

> I'm not sure what app07 will be as I think the 4th video is out of context
> for what I'm planing on doing (ring an alarm as a 10-minute timer).

Hi Bill,
I left a placeholder for app07, because when I made app08, I realized
instantly that it would be nice to populate the grocery list from a file on
the net which the whole family can read and write to.

So while I didn't do that last Butterfield tutorial yet (app07), I think I
will eventually come back to it since it's essential to have a better
database for populating things like grocery lists that the whole family can
access.

Meanwhile... thanks to all of Diesel's wonderful advice ... 
o For practice, I re-wrote all the apps, to reinforce concepts:
  <http://www.bild.me/bild.php?file=7991068androidstudio75.jpg>
o The tutorials were MUCH EASIER to follw with my new 20/20 hindsight!
  <http://www.bild.me/bild.php?file=7987464androidstudio74.jpg>
o They were even easy to customize so that I created my first 'app':
  <http://www.bild.me/bild.php?file=5881250androidstudio73.jpg>

So the good news is that we're no longer complete & total noobs! :)
We know enough now to at least build our own primitive apps. :)

[toc] | [prev] | [next] | [standalone]


#57567

Fromarlen michael holder <arlen_michael_holder@example.com>
Date2018-11-16 05:08 +0000
Message-ID<psljbi$9ah$1@news.mixmin.net>
In reply to#57362
On Sat, 10 Nov 2018 10:43:10 +0000, Bill wrote:

> I have now got through the text based button and message build, which 
> works, and am starting on the first Butterfield video.

Hi Bill,

Heads up!

I just finished the last Butterfield video (number 4 of 4). 
Do NOT do it! 

It's completely different in character from the previous 3.
Don't even _think_ of doing it. Really. 

I don't think _anyone_ (at our stage) can be successful with it.
You need to set up a SQL server which he doesn't cover at all!
And he skips steps like you can't believe!
He never even scrolls through the final code so you can check for errors.

It's just not worth the effort. 
I wish I knew that before I went through every step, but I know that now.

Everything below is simply detail on the information above.
Don't do that fourth Butterfield product. Let's find another that's better.
============================================================================
o Android Studio For Beginners Part 1, 2, 3, 4 by Bill Butterfield, 
  Published on Jun 13, 2017 
  https://youtu.be/dFlPARW5IX8 (part 1) a simple adder
  https://youtu.be/6ow3L39Wxmg (part 2) call a program outside the app
  https://youtu.be/rdGpT1pIJlw (part 3) grocery list
  https://youtu.be/bu5Y3uZ6LLM (part 4) mysql grocery list
============================================================================
The first three videos are fantastic, but the fourth is almost impossible.
o You need to set up an sql server and database on port 3306
o You need to obtain & set up oracle mysql workbench
o You need to add .NET Framework & Visual C++ runtimes if you don't have them
o His video is mysql version 3 but the current version is version 8
o You need to import the java connector jar file library as a module
o He cuts and pastes entire files during the video without scrolling!
o That's critical since you can't follow easily what he's doing.

This last video is NOTHING like the prior 3 videos in terms of handholding!
============================================================================
Some of the software you need will be:
============================================================================
JDBC Driver for MySQL (Connector/J)
 https://dev.mysql.com/downloads/connector/j/
 Hit "Platform Independent" in the selector.
 That gives a tar ball and a zip archive. 
 Obviously get the zip archive.
 Platform Independent (Architecture Independent), ZIP Archive	8.0.13	6.4M	
 Download (mysql-connector-java-8.0.13.zip)
 MD5: a106e8c50a616b93ce28a6f7cb991586 

https://dev.mysql.com/downloads/file/?id=480292
 Begin Your Download
 mysql-connector-java-8.0.13.zip
 https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-8.0.13.zip
============================================================================
Unzip and move the mysql-connector-java-8.0.13 folder to
 C:\app\editor\android\sql\mysql-connector-java-8.0.13\

 Make a note of the path (as you'll need it later):
 C:\app\editor\android\sql\mysql-connector-java-8.0.13\mysql-connector-java-8.0.13.jar
============================================================================
My Sequel Workbench
 https://dev.mysql.com/downloads/workbench/
 Windows (x86, 64-bit), MSI Installer 	8.0.13 	33.6M 	
 Download
 (mysql-workbench-community-8.0.13-winx64.msi)
 MD5: 298f374a2a032bf5148fc4909a2dcab1 | Signature

https://dev.mysql.com/downloads/file/?id=480542
 https://cdn.mysql.com//Downloads/MySQLGUITools/mysql-workbench-community-8.0.13-winx64.msi

Requires:
o Microsoft .NET Framework 4.5
  https://www.microsoft.com/en-us/download/details.aspx?id=30653
  https://download.microsoft.com/download/B/A/4/BA4A7E71-2906-4B2D-A0E1-80CF16844F5F/dotNetFx45_Full_setup.exe
o Visual C++ Redistributable for Visual Studio 2015
  https://www.microsoft.com/en-us/download/details.aspx?id=48145
  https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x64.exe
  https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x86.exe
============================================================================
Importing the jar file is pretty easy though:
 AndroidStudio321: Right click on app > new > module > import JAR/.AAR Package
 C:\app\editor\android\sql\mysql-connector-java-8.0.13\mysql-connector-java-8.0.13.jar
============================================================================
Even if you get the program to work, you _still_ need to set up a SQL server!
============================================================================
Here are the main files at the point that I gave up (after about 2 hours).

o C:\tmp\android\app07\app\src\main\AndroidManifest.xml
o C:\tmp\android\app07\app\src\main\java\com\kiss\app07\mainActivity.java
o C:\tmp\android\app07\app\src\main\java\com\kiss\app07\ItemAdapter.java
o C:\tmp\android\app07\app\src\main\java\com\kiss\app07\DbStrings.java
o C:\tmp\android\app07\app\build.gradle
o C:\tmp\android\app07\app\src\main\res\layout\item_layout.xml
o C:\tmp\android\app07\app\src\main\res\layout\activity_main.xml
============================================================================
C:\tmp\android\app07\app\src\main\AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.kiss.app07">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
============================================================================
C:\tmp\android\app07\app\src\main\java\com\kiss\app07\mainActivity.java

package com.kiss.app07;

import android.content.Context;
import android.content.res.Resources;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextClock;
import android.widget.TextView;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.LinkedHashMap;
import java.util.Map;

public class MainActivity extends AppCompatActivity {

    ItemAdapter itemAdapter;
    Context thisContext;
    ListView myListView;
    TextView progressTextView;
    Map<String>, Double> fruitsMap = new LinkedHashMap<String>, Double>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Resources res = getResources();
        myListView = (ListView) findViewById(R.id.myListView);
        progressTextView = (TextView) findViewById(R.id.progressTextView);
        thisContext = this;

        progressTextView.setText("");
        Button btn = (Button) findViewById(R.id.getDataButton);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                GetData retrieveData = new GetData();
                retrieveData.execute("");
            }
        });
            }
        };
    }

    private class GetData extends AsyncTask<String, String, String> {
        String msg = "";
        // JDBC drivr name and database URL
        static final String JDBC_DRIVER = "com.kill.app07.Driver";
        // Example: 10.20.30.40:3306
        static final String DB_URL = "jdbc:mysql://" +
                DbStrings.DATABASE_URL + "/" +
                DbStrings.DATABASE_NAME;

        @Override
        protected void onPreExecute() {
            progressTextView.setText("Connecting to database...");
        }

        @Override
        protected String doInBackground(String...params) {

            Connection conn = null;
            Statement stmt = null;

            try {
                Class.forName(JDBC_DRIVER);
                conn = DriverManager.getConnection(DB_URL, DbStrings.USERNAME, DbStrings.PASSWORD);

                stmt = conn.createStatement();
                String sql = "SELECT * FROM fruits";
                ResultSet rs = stmt.executeQuery(sql);

                while (rs.next()) {
                    String name = rs.getString("name");
                    double price = rs.getDouble("price");

                    fruitsMap.put(name, price);
                }

                msg = "Process complete.";

                rs.close();
                stmt.close();
                conn.close();

            } catch (SQLException connError) {
                msg = "An exception was thorn for JDBC.";
                connError.printStackTrace();
                ;
            } catch (ClassNotFoundException e) {
                msg = "A class not found exception was thrown.";
                e.printStackTrace();
            } finally {

                try {
                    if (stmt != null) {
                        stmt.close();
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                try {
                    if (conn != null) {
                        conn.close();
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }

            }

            return null;
        }

        @Override
        protected void onPostExexute (String msg){

            progressTextView.setText(this.msg);

            if (fruitsMap.size() > 0) {

                itemAdapter = new ItemAdapter(thisContext, fruitsMap);
                myListView.setAdapter(itemAdapter);
            }

        }

} //End of MainActivity
============================================================================
C:\tmp\android\app07\app\src\main\java\com\kiss\app07\ItemAdapter.java

package com.kiss.app07;

        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 com.kiss.app07.R;

        import java.util.ArrayList;
        import java.util.List;
        import java.util.Map;

/**
 * Created by Example on 11/15/2018.
 */

public class ItemAdapter extends BaseAdapter {

    LayoutInflater  mInflator;
    Map<String, Double> map;
    List<String> names;
    List<Double> prices;

    public ItemAdapter(Context c, Map m) {
        mInflator = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        map = m;
        names = new ArrayList<String>(map.keySet());
        prices = new ArrayList<Double>(map.values());
    }

    @Override
    public int getCount() {
        return map.size();
    }

    @Override
    public Object getItem(int i) {
        return names.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View convertView, ViewGroup parent) {

        View v = mInflator.inflate(R.layout.item_layout, null);
        TextView nameTextView = (TextView) v.findViewById(R.id.nameTextView);
        TextView priceTextView = (TextView) v.findViewById(R.id.priceTextView);

        nameTextView.setText(names.get(i));
        priceTextView.setText("$" + prices.get(i).toString());

        return v;
    }
}
============================================================================
C:\tmp\android\app07\app\src\main\java\com\kiss\app07\DbStrings.java

package com.kiss.app07;

public class DbStrings {

    static final String DATABASE_URL = "129.0.0.1:3306";
    static final String DATABASE_NAME = "mhs_example";
    static final String USERNAME = "some_user";
    static final String PASSWORD = "your_password";
}
============================================================================
C:\tmp\android\app07\app\build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.kiss.app07"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

    compile project (':mysql-connector-java-8.0.13')
}
============================================================================
C:\tmp\android\app07\app\src\main\res\layout\item_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">

    <TextView
        android:id="@+id/nameTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginStart="24dp"
        android:layout_marginTop="35dp"
        android:layout_marginBottom="35dp"
        android:text="Name" />

    <TextView
        android:id="@+id/priceTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/nameTextView"
        android:layout_alignParentEnd="true"
        android:layout_marginEnd="63dp"
        android:text="Price" />
</RelativeLayout>
============================================================================
C:\tmp\android\app07\app\src\main\res\layout\activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/getDataButton"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:text="Get Data"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/progressTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:text="Progress"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/getDataButton" />

    <ListView
        android:id="@+id/myListView"
        android:layout_width="368dp"
        android:layout_height="412dp"
        android:layout_marginBottom="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />
</android.support.constraint.ConstraintLayout>
============================================================================
============================================================================

[toc] | [prev] | [next] | [standalone]


#57578

FromBill <Billaboard@gmail.com>
Date2018-11-16 15:33 +0000
Message-ID<pATanoDaNu7bFwLP@end.of.the.universe>
In reply to#57567
In message <psljbi$9ah$1@news.mixmin.net>, arlen michael holder 
<arlen_michael_holder@example.com> writes
>Everything below is simply detail on the information above. Don't do 
>that fourth Butterfield product. Let's find another that's better.
>========================================================================
>====
>o Android Studio For Beginners Part 1, 2, 3, 4 by Bill Butterfield,
>  Published on Jun 13, 2017
>  https://youtu.be/dFlPARW5IX8 (part 1) a simple adder
>  https://youtu.be/6ow3L39Wxmg (part 2) call a program outside the app
>  https://youtu.be/rdGpT1pIJlw (part 3) grocery list
>  https://youtu.be/bu5Y3uZ6LLM (part 4) mysql grocery list
>========================================================================
>====
>The first three videos are fantastic, but the fourth is almost 
>impossible.
>o You need to set up an sql server and database on port 3306
>o You need to obtain & set up oracle mysql workbench
>o You need to add .NET Framework & Visual C++ runtimes if you don't 
>have them
>o His video is mysql version 3 but the current version is version 8 o 
>You need to import the java connector jar file library as a module o He 
>cuts and pastes entire files during the video without scrolling! o 
>That's critical since you can't follow easily what he's doing.
>
>This last video is NOTHING like the prior 3 videos in terms of 
>handholding!

The situation at my end is that I still haven't had time to watch 
through that 4th video, but I do still plan to at least do that before 
moving on.

I've used simple database software for years and ended up ages ago 
settling on mySQL as the one I always use. I have a bunch of mySQL 
databases here.
I have used Workbench and ODBC in the past, but not JDBC. Like 
everything else, I've forgotten how I set them up, but for the last few 
years have just used them.

So, the plan is to look at the 4th video and see what I think.

For the record, I think your alarm would be a good starting point if we 
can't find a good next step video or mini-course.

My personal app that I would like to have a shot at if I get more 
confident is a very simple camera app with very few frills.

Stage 1: Opening screen with big buttons to select:
1. Single picture every 5 secs or continuous video
2. Light on or off
3. Front or back camera.
4. Go!
Having hit Go!, huge button or whole screen tap, toggles picture 
sequence or video.

Stage 2 Same interface, but uses external "snake" type camera to poke 
into things

The idea is to make something that is easy to use in awkward situations, 
and was prompted by my efforts to inspect hidden engine areas on a 
European-built Jeep Grand Cherokee with Merc engine of black-death fame 
(now thankfully sold) and inspect the insides of various stringed 
musical instruments like guitars, mandolins etc.

This is probably way beyond me, but we'll see.
-- 
Bill

---
This email has been checked for viruses by AVG.
https://www.avg.com

[toc] | [prev] | [next] | [standalone]


#57583

Fromarlen michael holder <arlen_michael_holder@example.com>
Date2018-11-16 18:52 +0000
Message-ID<psn3la$u0j$1@news.mixmin.net>
In reply to#57578
On Fri, 16 Nov 2018 15:33:46 +0000, Bill wrote:

> The situation at my end is that I still haven't had time to watch 
> through that 4th video, but I do still plan to at least do that before 
> moving on.

Hi Bill,

My main caveat on the Butterfield #4 video is that he pastes in entire
files, and then he does NOT show you what that entire file looks like!

So you have to "piece together" the jigsaw puzzle, from various screens
well before and well after that pasting of the entire file, just to figure
out what that file contained!

If he only added a simple page-by-page scroll the moment he pasted in a
file, it would be vastly easier for the first person to reproduce what he
wrote. I did that for you though, so that should "help" you (if) I
reproduced what he wrote faithfully.

If you copy the code I pasted prior, bear in mind one caveat which is that
Bill Butterfield copied (and modified) his code from the previous video #3
(simply grocery list) for 
C:\tmp\android\app07\app\src\main\java\com\kiss\app07\ItemAdapter.java
So I did the same thing, with the one difference is that I kept the index
"i", but where Bill Butterfield used an index named "position".

The _reason_ I did that was because I didn't know what _other_ files
defined or used that index, so I didn't want to change what Android Studio
automatically created for me.

In hindsight, I should have changed it in the prior app to make it work,
but I didn't do that. Also in hindsight, I should have added a _comment_ at
the first instance of "i" instead of "position", which I will try to do in
the future since I'm posting the code here for you and others to use.

However, this "i" versus "position" is a minor difference between his and
my code, where, if you recall, I left it that way because his version of
Android auto-created "position" while my version of Android auto-created
"i". 

Everything else I "tried" to keep the same as what he pasted.

> I've used simple database software for years and ended up ages ago 
> settling on mySQL as the one I always use. I have a bunch of mySQL 
> databases here.

Oh. Well. Then...

That makes a _huge_ difference!
I have _zero_ experience with mySQL.

In fact, I can't even pronounce mySQL!

So, when/if you do that #4 Bill Butterfield video, I'd love to know how you
set up the mySQL server, since I didn't even _touch_ the setup of the mySQL
server to localhost port 3306.

> I have used Workbench and ODBC in the past, but not JDBC. Like 
> everything else, I've forgotten how I set them up, but for the last few 
> years have just used them.

I have to be careful responding becuase I don't even know what a "java
connector" is, but, I can tell you the "download" and "import" step of that
"java connector" is pretty easy.

There are gotchas though, where, for example, in the video comments, people
made the _same_ mistake I made at first, which is that Oracle makes it
almost impossible to find that java connector zip file but I can give you a
direct URL to that zip file.

Oracle seems to constantly want you to download the entire all-encompassing
"msi" installer, when all you want is the thing called a "java connector".

Bearing in mind the current version is five main numbers higher than what
Bill Butterfield used in 2017 (he used version 3, the current version is
8), these are the only two steps you need, once you figure it all out:
1. On Windows, download & unzip the thing called a "java connector"
2. In Android Studio, "import" that "jar" file as a "modile.

Here is the URL to the current version of the Oracle java connector:
 <https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-8.0.13.zip> 

Here is the Android Studio command to import the resultant jar file:
AndroidStudio321: Right click on app > new > module > import JAR/.AAR Package
 C:\app\editor\android\sql\mysql-connector-java-8.0.13\mysql-connector-java-8.0.13.jar

Where, my Windows hierarchy under "android" has a new "sql" folder: :)
o C: === my main drive
o app === where all my applications get installed
o editor === where all editing programs get installed
o android === where android "stuff" was recently installed
0. how ==> all my text tutorials that I'm writing as a result
1. jdk === the JDK and JRE
2. sdk === the SDK and ADB 
3. emu === MS, google, andyroid, genymotion, bluestacks, arm., emulators 
4. ide === the Google Android Studio & Microsoft Visual Basic IDEs
5. cpu === the haxm, AMD, & Intel hyper-v & process identification utils
6. app === the archive of installed apps (app01.zip, app02.zip, etc.)
7. vid === the archive of tutorial videos (& text notes for each video)
8. sql === the newly downloaded sql java connectors & workbenches 

> So, the plan is to look at the 4th video and see what I think.

That's a good plan Bill, where we can help each other since having a
database for the grocery list app is useful, especially since individual
members of a family could edit the home database from an iPad in the
kitchen whenever something goes low, and then the apps could pick up the
latest grocery list for use on the day that they go grocery shopping.

My problem is that I don't know how to spell SQL, let alone set it up.
So when you get Bill Butterfield's video #4 working, I could benefit from
your advice. 

Meanwhile, I'll move on to a timer tutorial of some sort since my first
"real" app is supposed to be a 10-minute kiss timer.

If/when you're successful, I'll come back to that Butterfield #4 project,
so I'll leave a TBD space for "app07" as a placeholder.
  <http://www.bild.me/bild.php?file=7991068androidstudio75.jpg>
app01 === Google "hello world"
app02 === Google "enter text, press button, shows up in next screen"
app03 === Butterfield adder of two numbers
app04 === Working port of the previous app (no small feat)
app05 === Butterfield opening of an outside activity (web browser)
app06 === Butterfield simple grocery list
app07 === TBD Butterfield sql grocery list
app08 === Custom port of the simple grocery app to my grocery store

I plan on app09 being a simple alarm timer of some sort...

> For the record, I think your alarm would be a good starting point if we 
> can't find a good next step video or mini-course.

I agree with you, Bill, where I see the _need_ for a complete set of apps,
from app01 (hello world) to app99 (or whatever) which walks a person
through all the major types of coding situations on Android, where each app
does one thing well. 

Most of us humans can take a part from one car and fit it in another, so to
speak, once we have the part working in one car, which is why that list of,
oh, say, 100 tutorials, each of which does one thing well, would be useful.

To that end, I'll see if I can dig up alarm clock tutorials, where that
would be my next approach. As you may have figured out, 9 out of 10
tutorials on YouTube suck, where, I'm at the point that if I hear another
Heavy-Non-English accent, I'm gonna ditch it on sight. Jesus. They're so
bad those tutorials that you wonder if they're being paid to just throw
them out there and they're being paid by the sheer number they produce
instead of by the quality of results. :(

> My personal app that I would like to have a shot at if I get more 
> confident is a very simple camera app with very few frills.

Oh Yeah! I'm with you on the need for a KISS camera app!

In fact, I have _entire threads_ on what is wrong with camera apps!
They don't get the SIMPLE stuff right!

The first camera app I write will be so simple that it can be used under a
car to snap photos wearing gloves, where all the controls that get in the
way (like that idiotic selfie switch for example) will be removed!

I do a lot of work on cars as I keep them for decades (yes, plural), and
I've never once been to a mechanic in my life (I change & repair my own
tires, and balance my own wheels for example).

Here's a writetup, for example, on the clutch I recently replaced:
 <https://groups.google.com/d/msg/alt.home.repair/qEhph1MmSKs/S_R2Y4gRBwAJ>
I must have snapped a thousand pictures for that tutorial, for example.
You only need one (maybe two) buttons (or commands).

> Stage 1: Opening screen with big buttons to select:
> 1. Single picture every 5 secs or continuous video

Yup. I have an _entire thread_ on that one feature alone!
  What is a good TIMER photo app for Android? 
 <https://groups.google.com/d/msg/comp.mobile.android/9GPU430iHUg/QvBBYk9FCAAJ>

BTW, the _best_ (so far) that I can find for a camera "timer" app, is the 
Mark Harmon "Open Camera" (watch out, there are multiple camera apps with
similar names due to the open source nature of things).

That guy really knows what a user needs when it comes to camera timers!

So others can find it easily, here are some references (as always, since I
don't deal with "imaginary solutions" like so many others constantly do):
<https://play.google.com/store/apps/details?id=net.sourceforge.opencamera>
<https://f-droid.org/en/packages/net.sourceforge.opencamera/>
<https://sourceforge.net/projects/opencamera/>
<https://opencamera.sourceforge.io/>
<http://mark-h.users.sourceforge.net/>
<https://forum.xda-developers.com/android/apps-games/app-camera-t2850557>
<http://opencamera.org.uk/>

Here's a specific post I made when I found that app (which is the only
timer app of the many I tested, that I've kept):
 <https://groups.google.com/d/msg/comp.mobile.android/9GPU430iHUg/f2XFKL2RCAAJ>

> 2. Light on or off

Flashlight?

If so, this is good for working UNDER the car, where you can't see
anything, and where you can't put your hands on the camera (most of the
time), so you need a timer, so you have to pre-place the camera, where the
"flashlight" is a good feature, if that's what you mean.

> 3. Front or back camera.

Auuuuuurrrrrrrrrgggggggggmmmmmmmmmhhhhhh!
I hate that selfie button.
I've never wanted it once in my entire life.

In my kiss camera app, it won't exist! :)

> 4. Go!
> Having hit Go!, huge button or whole screen tap, toggles picture 
> sequence or video.

Yup. I agree with you.
A simple camera app is a keeper for being on the list!

However, I think the alarm is easier as it interfaces less with hardware.

> Stage 2 Same interface, but uses external "snake" type camera to poke 
> into things

Hehhehheh... I've been there, done that!
Ever try to retrieve a lost bolt inside an intake manifold? 
(Don't ask if I have real-world experience in that!)

The snake camera I used (on another phone so I can't reference it), came
with its own app. 

> The idea is to make something that is easy to use in awkward situations, 
> and was prompted by my efforts to inspect hidden engine areas on a 
> European-built Jeep Grand Cherokee with Merc engine of black-death fame 
> (now thankfully sold) and inspect the insides of various stringed 
> musical instruments like guitars, mandolins etc.

Wow, Bill. I agree with you 100%. 

As I said, I do all my own mechanical work, so that means I've replaced
cooling systems, alternators, starters, etc., where if you've never done,
say, a starter, you'd think it was easy.

I mean, it's two 14mm bolts, right?
And, it's about the size of, oh, a quart jug of milk, right?

But, it weighs as much as a cannonball, and, worse, it's attached low down
in the absolute worst spot in a vehicle, attached to the flywheel. 

Actually, it's not in the worst spot in a vehicle. If you know bimmers, the
CCV is in the absolute worst spot possible in an engine bay! I've done one
too (and I hope to never do another German PCV for the rest of my life!).

If people have never tried to snap pictures in these crunched low-light
greasy low room gloved hands situations, then they won't understand how
crappy camera controls really are for such things.

As an aside, it's always the people who have never done such things who
blithely proclaim all sorts of "googled solutions", which, is kind of funny
in that the less someone knows of the problem, the more so-called
"solutions" they can find on the net. :)

Three things, I see, based on this conversation, are needed:
1. A good video tutorial site with the first 25 apps one should code, and, 
2. Specifically, a good alarm clock app coding tutorial (I think I have it)
3. And, specifically, a good camera customization coding tutorial.

I have an alarm clock tutorial that I'm exploring today so I hope to have a
solution for you when you're done with that Bill Butterfield SQL-based
grocery app (which I gave up on for now, due to lack of SQL experience).

[toc] | [prev] | [next] | [standalone]


#57586

Fromarlen michael holder <arlen_michael_holder@example.com>
Date2018-11-16 20:08 +0000
Message-ID<psn83q$6m3$1@news.mixmin.net>
In reply to#57583
On Fri, 16 Nov 2018 18:52:27 -0000 (UTC), arlen michael holder wrote:

> As an aside, it's always the people who have never done such things who
> blithely proclaim all sorts of "googled solutions", which, is kind of funny
> in that the less someone knows of the problem, the more so-called
> "solutions" they can find on the net. :)

BTW, since I do all my own mechanical work, that means I do my own
suspension alignment (you know, camber, caster, & toe, X, Y, & Zed).

The measurement of X, Y, and Zee aren't difficult using cellphones, which
have the required accuracy for angles, and the adjustment of the bolts is
trivial, where toe plates and camber jigs help.

What's difficult s the MATH involved.
It makes your head explode.

Not because trig is difficult mind you, as trig is trivial.
Only someone who has done their own alignment would understand why I say
the math makes your head explode - which is where a cellphone app could
play a key role in simplifying things.

You see, what you measure at home for an alignment is NEVER what the spec
actually is. Why? I can't tell you why. I can just tell you that it is.

For example, my bimmer has toe spec'd in degrees, but, at home, you
typically measure toe in inches, not in degrees ... simply because it's
trivial to measure toe in inches at home to the desired accuracy.

Yet, most American cars (thankfully) spec toe in inches (which, for once,
makes sense), but of course, it's often inches to centerline, where you
then have to figure out what they define as the centerline (which can be
different on every vehicle).

For camber, at least you get a spec in degrees, but you can measure camber
in inches using just a plumb bob and a ruler, so again, you have to convert
(using basic trig) from inches to degrees.

Meanwhile, you compute caster from other measurements.

The point is that (a) each vehicle is different in how it differs from (a)
the specs it gives you, and (b) the specs you can easily measure at home.

All the work is NOT in the measurements (measuring camber and toe to the
required precision and repeatability is trivial for example) nor is there
any work in the adjustments (twisting a bolt is easy, and even easier to
replicate the normal position of the vehicle with niceties like toe plates
and camber jigs).

All the work is in the math.
That's where an app that measures angles and which can take as input
inches, can be a wonderful app that, to my knowledge, doesn't exist yet.

Does anyone here know of such an app for example?

[toc] | [prev] | [next] | [standalone]


#57591

FromBill <Billaboard@gmail.com>
Date2018-11-17 00:04 +0000
Message-ID<dpcHd$Kls17bFwfI@end.of.the.universe>
In reply to#57583
In message <psn3la$u0j$1@news.mixmin.net>, arlen michael holder 
<arlen_michael_holder@example.com> writes
>Auuuuuurrrrrrrrrgggggggggmmmmmmmmmhhhhhh!
>I hate that selfie button.
>I've never wanted it once in my entire life.
>
>In my kiss camera app, it won't exist! :)

Just a very quick follow up on this point. I thought that switch useful 
for occasions when one might poke the camera into some area and yet be 
able to see part of the screen to aim the image better up and under.

One of the Android 4 phones I have kept is still here because it has 
just one hinged camera at the top. It can revolve through 180 degrees to 
point front or back, straight up or anywhere in between. It has been 
extremely useful, but I've never seen another phone like it. It's 
branded "Timmy" and was extremely low cost, something like the 
equivalent of $35 when I bought it new..

I had to be up this morning at 4.45 to drive daughter to a railway 
station, and had no time to watch the No 4 video until late afternoon. I 
saw about half, then went to sleep! So nothing achieved today.
-- 
Bill

---
This email has been checked for viruses by AVG.
https://www.avg.com

[toc] | [prev] | [next] | [standalone]


#57596

Fromarlen michael holder <arlen_michael_holder@example.com>
Date2018-11-17 02:38 +0000
Message-ID<psnuvg$gnr$1@news.mixmin.net>
In reply to#57591
On Sat, 17 Nov 2018 00:04:53 +0000, Bill wrote:

> Just a very quick follow up on this point. I thought that switch useful 
> for occasions when one might poke the camera into some area and yet be 
> able to see part of the screen to aim the image better up and under.

Hi Bill,

What might be useful, at times, is a camera app that shows half the screen
with each camera, so half is front and the other half is back. :)

> One of the Android 4 phones I have kept is still here because it has 
> just one hinged camera at the top. It can revolve through 180 degrees to 
> point front or back, straight up or anywhere in between. It has been 
> extremely useful, but I've never seen another phone like it. It's 
> branded "Timmy" and was extremely low cost, something like the 
> equivalent of $35 when I bought it new..

Hehhehheh ... I sliced a cut in a block of wood, so that I could wedge the
mobile phone into that slice, to make an el-cheapo "camera stand".

> I had to be up this morning at 4.45 to drive daughter to a railway 
> station, and had no time to watch the No 4 video until late afternoon. I 
> saw about half, then went to sleep! So nothing achieved today.

Since I had a hole at spot app07, I created a Kotlin-based variable-seed
die randomizer as per the Treehouse learning series tutorial videos, number
1, by Ben Deitch. 
 <http://www.bild.me/bild.php?file=5714883androidstudio82.jpg>

This 20-minute video is probably the _best_ video I've seen, in that they
_explain_ stuff, and, miracle of miracles, it is the first video that uses
the same version of IDE that we're using (AFAICT).
 <http://www.bild.me/bild.php?file=5714883androidstudio82.jpg>

I think the rest of the videos cost money (I'm not sure), but if there are
more videos from this outfit, I'd give them a thumbs-up on clarity!

What's interesting is that it's starting to get boring to watch "beginner"
videos, because half the stuff we both know by now, which, I guess, is
progress. :)

Here, for your use and for the use of others following along, here is my
ad-hoc log file. 
****************************************************************************
app07 

Roll a die variable-seed randomizer, written in Kotlin instead of in Java
****************************************************************************
============================================================================
This is the first tutorial I've seen which uses a current IDE version!

How to Make an Android App for Beginners, by Treehouse, April 20, 2018
 https://youtu.be/EOfCEhWq8sg (variable-seed randomizer, written in Kotlin)
============================================================================
Screenshot of the emulation:
 <http://www.bild.me/bild.php?file=6391211androidstudio81.jpg>
Screenshot of the phone:
 <http://www.bild.me/bild.php?file=5714883androidstudio82.jpg>
============================================================================
Main files:
C:\tmp\android\app07\app\src\main\java\com\kiss\app07\MainActivity.kt
C:\tmp\android\app07\app\src\main\res\layout\activity_main.xml
============================================================================
Note that the IDE provided the following code-improvement hints.
Issue id: HardcodedText

Hardcoded string "Roll the die", should use @string resource
Hardcoded string "Press ROLL button...", should use @string resource
Hardcoded string "Set the slider first...", should use @string resource

Hardcoding text attributes directly in layout files is bad for several
reasons:
* When creating configuration variations 
  (for example for landscape or portrait) 
  you have to repeat the actual text 
  (and keep it up to date when making changes)  
* The application cannot be translated to other languages by just 
  adding new translations for existing string resources.  
  There are quickfixes to automatically extract this hardcoded 
  string into a resource lookup.  
============================================================================
C:\tmp\android\app07\app\src\main\java\com\kiss\app07\MainActivity.kt

package com.kiss.app07

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.SeekBar
import android.widget.TextView
import java.util.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val rollButton = findViewById<Button>(R.id.rollButton)
        val resultsTextView = findViewById<TextView>(R.id.resultsTextView)
        val seekBar = findViewById<SeekBar>(R.id.seekBar)

        rollButton.setOnClickListener {
            val rand = Random().nextInt(seekBar.progress) + 1
            resultsTextView.text = rand.toString()
        }
    }
}
============================================================================
C:\tmp\android\app07\app\src\main\res\layout\activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">

    <Button
            android:text="Roll"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/rollButton" android:layout_marginBottom="24dp"
            app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
            android:layout_marginLeft="96dp"
android:layout_marginStart="96dp" app:layout_constraintEnd_toEndOf="parent"
            android:layout_marginEnd="96dp"
android:layout_marginRight="96dp"/>
    <SeekBar
            style="@style/Widget.AppCompat.SeekBar.Discrete"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:max="10"
            android:progress="3"
            android:id="@+id/seekBar" android:layout_marginEnd="32dp"
            app:layout_constraintEnd_toEndOf="parent"
android:layout_marginRight="32dp"
            android:layout_marginStart="32dp"
            app:layout_constraintStart_toStartOf="parent"
android:layout_marginLeft="32dp"
            android:layout_marginBottom="24dp"
app:layout_constraintBottom_toTopOf="@+id/rollButton"/>
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
            android:id="@+id/textView" android:layout_marginLeft="24dp"
android:layout_marginStart="24dp"
            android:layout_marginEnd="24dp"
android:layout_marginRight="24dp" android:layout_marginBottom="16dp"
            app:layout_constraintBottom_toTopOf="@+id/seekBar"
tools:text="How many?" android:textSize="24sp"
            android:text="Slide the slider"/>
    <View
            android:id="@+id/divider"
            android:layout_width="368dp"
            android:layout_height="1dp"
            android:background="?android:attr/listDivider"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
android:layout_marginBottom="16dp"
            app:layout_constraintBottom_toTopOf="@+id/textView"
android:layout_marginEnd="8dp"
            android:layout_marginRight="8dp"
android:layout_marginLeft="8dp" android:layout_marginStart="8dp"/>
    <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
            android:id="@+id/resultsTextView"
android:layout_marginTop="8dp" app:layout_constraintTop_toTopOf="parent"
            android:layout_marginBottom="8dp"
app:layout_constraintBottom_toTopOf="@+id/divider"
            android:textSize="36sp" android:hint="Press ROLL button..."
            app:layout_constraintHorizontal_bias="0.5"
android:gravity="center_vertical|center_horizontal"/>
</android.support.constraint.ConstraintLayout>
============================================================================
============================================================================

[toc] | [prev] | [next] | [standalone]


#57600

Fromarlen michael holder <arlen_michael_holder@example.com>
Date2018-11-17 05:25 +0000
Message-ID<pso8o1$vqj$1@news.mixmin.net>
In reply to#57596
On Sat, 17 Nov 2018 02:38:41 -0000 (UTC), arlen michael holder wrote:

> How to Make an Android App for Beginners, by Treehouse, April 20, 2018
>  https://youtu.be/EOfCEhWq8sg (variable-seed randomizer, written in Kotlin)
> ============================================================================
> Screenshot of the emulation:
>  <http://www.bild.me/bild.php?file=6391211androidstudio81.jpg>
> Screenshot of the phone:
>  <http://www.bild.me/bild.php?file=5714883androidstudio82.jpg>
> ============================================================================
> Main files:
> C:\tmp\android\app07\app\src\main\java\com\kiss\app07\MainActivity.kt
> C:\tmp\android\app07\app\src\main\res\layout\activity_main.xml
> ============================================================================

Woo hoo!
*I successfully ported that Kotlin randomizer app to Java!*
o <http://www.bild.me/bild.php?file=8019905androidstudio85.jpg>

Speaking of non-imaginary solutions … check out what I just accomplished, 
mostly on my own, just guessing at the steps!
o Kotlin -> Kotlin -> Java Bytecode -> Java
o <http://www.bild.me/bild.php?file=6618170androidstudio84.jpg>

It worked! (not the first time, but by the third attempt (or so), 
it worked - which is pretty good when I was mostly guessing what to do!
(I guessed, for example, on the 2nd attempt, at using the "Refactor" 
command … and … oddly enough … the darn thing worked!)

On the third attempt, I guessed that you have to clean, rebuild, 
and then CLOSE Android Studio (it failed when I tested it before 
doing those things).

When I re-opened the project in Android Studio, it worked!

Note: Since I don't know that this is documented ANYWHERE on the planet, 
we could probably slim down the number of steps by a bit.

Also, I haven't TOUCHED DOS the xcopy DOS command in something like a 
decade, so Windows experts are asked to improve the DOS commands below.

***************************************************************************
How to successfully port Kotlin-based app07 to Java-based app09
***************************************************************************
o <http://www.bild.me/bild.php?file=2733146androidstudio83.jpg>
o <http://www.bild.me/bild.php?file=6618170androidstudio84.jpg>
o <http://www.bild.me/bild.php?file=8019905androidstudio85.jpg>
============================================================================
Note: I probably could use better Windows commands but these worked for me:
rmdir /s 
xcopy /f/j/s/w/z 
============================================================================
STEP 1: *First port the Kotlin-based app07 to the Kotlin-based app09*
============================================================================
o Start Android Studio version 3.2.1 
o Create a new project "c:\tmp\android\app09"
o Optionally, run the project in an emulator to ensure it works
o Exit Android Studio 3.2.1
rmdir /s c:\tmp\android\app09\app\src\main\java\com\kiss\app09
xcopy /f/j/s/w/z C:\tmp\android\app07\app\src\main\java\com\kiss\app07 C:\tmp\android\app09\app\src\main\java\com\kiss\app09
rmdir /s C:\tmp\android\app09\app\src\main\res\
xcopy /f/j/s/w/z C:\tmp\android\app07\app\src\main\res C:\tmp\android\app09\app\src\main\res
rmdir /s C:\tmp\android\app09\app\libs
xcopy /f/j/s/w/z C:\tmp\android\app07\app\libs C:\tmp\android\app09\app\libs
rmdir /s C:\tmp\android\app09\app\src\main\assets 
xcopy /f/j/s/w/z C:\tmp\android\app07\app\src\main\assets C:\tmp\android\app09\app\src\main\assets
del C:\tmp\android\app09\app\src\main\AndroidManifest.xml
copy C:\tmp\android\app07\app\src\main\AndroidManifest.xml C:\tmp\android\app09\app\src\main\AndroidManifest.xml
vim C:\tmp\android\app09\app\src\main\AndroidManifest.xml
 :%s/com.kiss.app07/com.kiss.app09/g
 :wq
del C:\tmp\android\app09\app\build.gradle
copy C:\tmp\android\app07\app\build.gradle C:\tmp\android\app09\app\build.gradle
del C:\tmp\android\app09\gradle.properties
copy C:\tmp\android\app07\gradle.properties C:\tmp\android\app09\gradle.properties
rmdir /s C:\tmp\android\app09\gradle\wrapper
xcopy /f/j/s/w/z C:\tmp\android\app07\gradle\wrapper C:\tmp\android\app09\gradle\wrapper
o Start Android Studio version 3.2.1 
o Open the project app09 (if it didn't open automatically)
o Wait for the message "Gradle build finished in (time)"
o Note that you can NOT run the app until the specified point below (or it will fail)
o Rightclick "Project | app" > Replace in path > 
  Line1 = app07
  Line2 = app09
  Select "In Project"
  And then hit the button "Replace All"
  (If it complains about replacing over a thousand instances, just tell it to continue.)
o Wait for the messages to indicate successful replacement:
  In Project = 1,201 occurrences replaced
o Doublecheck the replacement worked for all four areas:
  "In Project", "Module", "Directory", "Scope"
o AndroidStudio321:Build -> Clean Project
  Wait for the message to indicate successful clean project:
  "Gradle build finished in (time)"
o AndroidStudio321:Build -> Rebuild Project
  Wait for the message to indicate successful rebuild project:
  "Gradle build finished in (time)"
o Do not run the app yet (it will fail)
o Optionally save everything and close the project
  AndroidStudio321:File > Save All
  AndroidStudio321:File > Close Project
o Exit Android Studio version 3.2.1
o Start Android Studio version 3.2.1 & open the project app09
o Now you can test that app09 works on the emulator (and/or the phone)
o <http://www.bild.me/bild.php?file=2733146androidstudio83.jpg>
============================================================================
STEP 2: *Now port the Kotlin-based app09 to a Java-based app09*
============================================================================
o Now it's time to port Kotlin to Java using a multi-step process
  In the "Project" pane, select "app | java | MainActivity"
  AndroidStudio321:Tools > Kotlin > Show Kotlin Bytecode 
  [Decompile] 
o Note: If you have additional plugins, you can decompile directly to Java
o This will create a tab named "MainActivity.decompiled.java"
o Copy that java code 
o Replace all the Kotlin code in the "MainActivity.kt" tab
o A form will pop up asking:
  Convert Code From Java
  Clipboard contents copied from Java file.
  Do you want to convert it to Kotlin code?
  [Yes][No]
o Select "No"
o Now change the name of the "kt" file to a "java" file:
  AndroidStudio321:Refactor > Rename File 
  Rename file 'MainActivity.kt' and its usages to:
  MainActivity.java
  [Refactor]
o AndroidStudio321:Build -> Clean Project
  Wait for the message to indicate successful clean project:
  "Gradle build finished in (time)"
o AndroidStudio321:Build -> Rebuild Project
  Wait for the message to indicate successful rebuild project:
  "Gradle build finished in (time)"
o Optionally save everything and close the project
  AndroidStudio321:File > Save All
  AndroidStudio321:File > Close Project
o Exit Android Studio version 3.2.1
o Start Android Studio version 3.2.1 & open the project app09
o Now you can test that app09 works on the emulator (and/or the phone)
o <http://www.bild.me/bild.php?file=6618170androidstudio84.jpg>

Voila!
o <http://www.bild.me/bild.php?file=8019905androidstudio85.jpg
============================================================================
C:\tmp\android\app09\app\src\main\AndroidManifest.xml
C:\tmp\android\app09\app\src\main\java\com\kiss\app09\MainActivity.java
C:\tmp\android\app09\app\src\main\res\layout\activity_main.xml
============================================================================
C:\tmp\android\app09\app\src\main\AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.kiss.app09">

    <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>

</manifest>
============================================================================
C:\tmp\android\app09\app\src\main\java\com\kiss\app09\MainActivity.java

package com.kiss.app09;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.TextView;
import java.util.HashMap;
import java.util.Random;
import kotlin.Metadata;
import kotlin.jvm.internal.Intrinsics;
import org.jetbrains.annotations.Nullable;

@Metadata(
    mv = {1, 1, 11},
    bv = {1, 0, 2},
    k = 1,
    d1 = {"\u0000\u0018\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\u0018\u00002\u00020\u0001B\u0005¢\u0006\u0002\u0010\u0002J\u0012\u0010\u0003\u001a\u00020\u00042\b\u0010\u0005\u001a\u0004\u0018\u00010\u0006H\u0014¨\u0006\u0007"},
    d2 = {"Lcom/kiss/app09/MainActivity;", "Landroid/support/v7/app/AppCompatActivity;", "()V", "onCreate", "", "savedInstanceState", "Landroid/os/Bundle;", "app_debug"}
)
public final class MainActivity extends AppCompatActivity {
    private HashMap _$_findViewCache;

    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(2131296284);
        Button rollButton = (Button)this.findViewById(2131165283);
        final TextView resultsTextView = (TextView)this.findViewById(2131165279);
        final SeekBar seekBar = (SeekBar)this.findViewById(2131165298);
        rollButton.setOnClickListener((OnClickListener)(new OnClickListener() {
            public final void onClick(View it) {
                Random var10000 = new Random();
                SeekBar var10001 = seekBar;
                Intrinsics.checkExpressionValueIsNotNull(seekBar, "seekBar");
                int rand = var10000.nextInt(var10001.getProgress()) + 1;
                TextView var3 = resultsTextView;
                Intrinsics.checkExpressionValueIsNotNull(resultsTextView, "resultsTextView");
                var3.setText((CharSequence)String.valueOf(rand));
            }
        }));
    }

    public View _$_findCachedViewById(int var1) {
        if (this._$_findViewCache == null) {
        this._$_findViewCache = new HashMap();
    }

        View var2 = (View)this._$_findViewCache.get(var1);
        if (var2 == null) {
            var2 = this.findViewById(var1);
            this._$_findViewCache.put(var1, var2);
        }

        return var2;
    }

    public void _$_clearFindViewByIdCache() {
        if (this._$_findViewCache != null) {
        this._$_findViewCache.clear();
    }

    }
}
============================================================================
C:\tmp\android\app09\app\src\main\res\layout\activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">

    <Button
            android:text="Roll the die"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/rollButton" android:layout_marginBottom="24dp"
            app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent"
            android:layout_marginLeft="96dp" android:layout_marginStart="96dp" app:layout_constraintEnd_toEndOf="parent"
            android:layout_marginEnd="96dp" android:layout_marginRight="96dp"/>
    <SeekBar
            style="@style/Widget.AppCompat.SeekBar.Discrete"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:max="10"
            android:progress="3"
            android:id="@+id/seekBar" android:layout_marginEnd="32dp"
            app:layout_constraintEnd_toEndOf="parent" android:layout_marginRight="32dp"
            android:layout_marginStart="32dp"
            app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="32dp"
            android:layout_marginBottom="24dp" app:layout_constraintBottom_toTopOf="@+id/rollButton"/>
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"
            android:id="@+id/textView" android:layout_marginLeft="24dp" android:layout_marginStart="24dp"
            android:layout_marginEnd="24dp" android:layout_marginRight="24dp" android:layout_marginBottom="16dp"
            app:layout_constraintBottom_toTopOf="@+id/seekBar" tools:text="How many?" android:textSize="24sp"
            android:text="Set the slider first..."/>
    <View
            android:id="@+id/divider"
            android:layout_width="368dp"
            android:layout_height="1dp"
            android:background="?android:attr/listDivider"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent" android:layout_marginBottom="16dp"
            app:layout_constraintBottom_toTopOf="@+id/textView" android:layout_marginEnd="8dp"
            android:layout_marginRight="8dp" android:layout_marginLeft="8dp" android:layout_marginStart="8dp"/>
    <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"
            android:id="@+id/resultsTextView" android:layout_marginTop="8dp" app:layout_constraintTop_toTopOf="parent"
            android:layout_marginBottom="8dp" app:layout_constraintBottom_toTopOf="@+id/divider"
            android:textSize="36sp" android:hint="Press ROLL button..."
            app:layout_constraintHorizontal_bias="0.5" android:gravity="center_vertical|center_horizontal"/>
</android.support.constraint.ConstraintLayout>
============================================================================
***************************************************************************

[toc] | [prev] | [next] | [standalone]


#57729

FromBill <Billaboard@gmail.com>
Date2018-11-21 17:04 +0000
Message-ID<M7JjJKxqAZ9bFws4@end.of.the.universe>
In reply to#57583
In message <psn3la$u0j$1@news.mixmin.net>, arlen michael holder 
<arlen_michael_holder@example.com> writes
>Oh Yeah! I'm with you on the need for a KISS camera app!
>
>In fact, I have _entire threads_ on what is wrong with camera apps! 
>They don't get the SIMPLE stuff right!
>
>The first camera app I write will be so simple that it can be used 
>under a car to snap photos wearing gloves, where all the controls that 
>get in the way (like that idiotic selfie switch for example) will be 
>removed!
>
>I do a lot of work on cars as I keep them for decades (yes, plural), 
>and I've never once been to a mechanic in my life (I change & repair my 
>own tires, and balance my own wheels for example).
>
>Here's a writetup, for example, on the clutch I recently replaced:
> 
><https://groups.google.com/d/msg/alt.home.repair/qEhph1MmSKs/S_R2Y4gRBwAJ> 
>I must have snapped a thousand pictures for that tutorial, for example. 
>You only need one (maybe two) buttons (or commands).
>
>> Stage 1: Opening screen with big buttons to select:
>> 1. Single picture every 5 secs or continuous video
>
>Yup. I have an _entire thread_ on that one feature alone!
>  What is a good TIMER photo app for Android?
> 
><https://groups.google.com/d/msg/comp.mobile.android/9GPU430iHUg/QvBBYk9
>FCAAJ>
>
>BTW, the _best_ (so far) that I can find for a camera "timer" app, is 
>the Mark Harmon "Open Camera" (watch out, there are multiple camera 
>apps with similar names due to the open source nature of things).

For a bit of light relief from my tussle with JDBC connectors, I'll 
continue the conversation here.
Yes, I use "Open Camera" on both my phones and it is the best camera app 
that I've found.
My days of getting under vehicles are now well and truly over. I did do 
some work on them in the past, and I have rebuilt small marine engines 
and gearboxes, but even that would be difficult now. My "old vehicles" 
have now progressed to the age where the electronics is taking over, so 
I've done a bit with OBD2 diagnostics.
On the 4x4 front **, I've had 2 Land Rover 110's, a Mk 1 Discovery that 
caught fire while being welded by my local friendly mechanic. Then we 
hit electronics. The nightmare Jeep Grand Cherokee followed, where I got 
to the stage of talking to the ECU using a terminal program on an 
Android tablet before discovering the brilliant free app written by 
someone from Estonia. Now I'm on a 2004 Range Rover, where I use some 
BMW diagnostics into a laptop.
The Rangie has just had its annual MOT test and had a bit of suspension 
work and a new tyre. This meant it had to be jacked up which, as you may 
know, means the air suspension loses all touch with reality and has to 
be reset electronically. The mechanic has several very expensive 
diagnostic tools, but nothing that would work with either the Jeep or 
Range Rover, so he does the work and brings it back to me for the 
electronics to be set up again. Unfortunately, today's reset hasn't 
worked and one corner droops, so it's back to him to find what has 
fallen off or burst.
This is exactly where a camera snake app would be excellent, allowing me 
to inspect the underpinnings without having to crawl. I've just been 
reading about some big square bright 12 volt LED panels that would be 
ideal to throw under the car to illuminate the problems.

** Only needed to tow the 3 ton boat we built - now given to my son, so 
the need for 4WD and low range gears has gone.
-- 
Bill

---
This email has been checked for viruses by AVG.
https://www.avg.com

[toc] | [prev] | [next] | [standalone]


#57774

Fromarlen michael holder <arlen_michael_holder@example.com>
Date2018-11-22 07:11 +0000
Message-ID<pt5krl$qgh$1@news.mixmin.net>
In reply to#57729
On Wed, 21 Nov 2018 17:04:42 +0000, Bill wrote:

> For a bit of light relief from my tussle with JDBC connectors, I'll 
> continue the conversation here.

Hi Bill,
We have both been working on moving forward, albeit in divergent
ways (where that's just fine).

> Yes, I use "Open Camera" on both my phones and it is the best camera app 
> that I've found.

Great! I'm glad you use it, as it's the best there is for such things.
We seem to agree on our "assessment" of things.
That's good because it shows you're rational.

> My days of getting under vehicles are now well and truly over. I did do 
> some work on them in the past, and I have rebuilt small marine engines 
> and gearboxes, but even that would be difficult now. My "old vehicles" 
> have now progressed to the age where the electronics is taking over, so 
> I've done a bit with OBD2 diagnostics.

Sounds like you have similar experience.
OBDII was a quantum leap in diagnostics. 

It basically makes diagnostics for emissions-related stuff, almost simple.
(I say "almost" because it's just a pointer ... but it's a good pointer.)

You still have to figure out if it's the power to the sensor, or the sensor
itself, or what the sensor is sensing (which is usually the real problem).

> On the 4x4 front **, I've had 2 Land Rover 110's, a Mk 1 Discovery that 
> caught fire while being welded by my local friendly mechanic.
> Then we hit electronics. 

Yikes! Good luck with that! Ouch.

You reminded me that, way back in the late sixties, I did my first welding
on a door sill, where, I didn't even THINK about the fact that there was a
thick wiring loom UNDER the metal I was welding with that gas welder! 

I was splicing wires for hours after that! :)

> The nightmare Jeep Grand Cherokee followed, where I got 
> to the stage of talking to the ECU using a terminal program on an 
> Android tablet before discovering the brilliant free app written by 
> someone from Estonia. 

Now _that_ is a nice feat!
That's the kind of app I want to write, but for alignment. :)

> Now I'm on a 2004 Range Rover, where I use some 
> BMW diagnostics into a laptop.

Yup. I know my bimmer well. Ediabas is the main interface.
It's a pain because the software was meant for RS232 serial ports.
Which you can't find anymore (not easily).

So we use adapters from the laptop USB port to the OBDII port.
 
Most of us use Inpa, but we all have NCS Expert, NCS Dummies, DIS/GT1,
EasyDIS, and Progman (for programming one of the dozen or so Electronic
Control Units in the E39 (which is what I own).

The great thing is that this is the same stuff the factory and dealer use.
The bad thing is a lot of it is still in German. :) 

You probably know all this stuff. I have pointers to ALL the software if
you need it. I have everything, but it has been YEARS since I had to
download it so I hope it's still there as that stuff tends to die out.

> The Rangie has just had its annual MOT test and had a bit of suspension 
> work and a new tyre.

Yup. Those smog tests on older cars are sometimes a PITA to pass.
And suspension work is, often, a PITA too! 

I'm currently honing my skills for suspension alignment.
While most people have an outdated opinion of both mounting & balancing
tires and doing an alignment at home, the reality is that the tools are
getting better and cheaper and more available by the day!

Just as we can now repair, mount and balance tires at home for an outlay in
tool costs that is amortized over about 3 or 4 sets of tires, the same is
happening for alignment.

On the problem is tremendously different, where, again, you'll hear
everyone say the outdated words that they can't do it - but it turns out to
be eminently possible.

I have a recent thread, for example, on the Android  tools for doing an
alignment at home over here... 
 <https://groups.google.com/forum/#!msg/alt.home.repair/aPbvm5vRti0/kUaNVtBhAgAJ>


> This meant it had to be jacked up which, as you may 
> know, means the air suspension loses all touch with reality and has to 
> be reset electronically.

Actually, I don't have fancy "air" suspension. I have struts. 
So that's too bad that you have to reset it. 

> The mechanic has several very expensive 
> diagnostic tools, but nothing that would work with either the Jeep or 
> Range Rover, so he does the work and brings it back to me for the 
> electronics to be set up again.

Wow. That's not good. I'm glad I don't have that problem.
What a pain.

> Unfortunately, today's reset hasn't 
> worked and one corner droops, so it's back to him to find what has 
> fallen off or burst.

Yikes. Again, I'm glad I don't have to deal with that.

> This is exactly where a camera snake app would be excellent, allowing me 
> to inspect the underpinnings without having to crawl.

Yup. Do you already have the snake camera? If so, didn't it come with an
app? (Mine did.)

> I've just been 
> reading about some big square bright 12 volt LED panels that would be 
> ideal to throw under the car to illuminate the problems.

Yup. I have Costco LED garage lights that I put to each side of the car
when I'm working in the garage. They are meant for the ceiling, but they
work on the floor perfectly! :)

They light up the underside of the car like it's daylight. 

> ** Only needed to tow the 3 ton boat we built - now given to my son, so 
> the need for 4WD and low range gears has gone.

Makes sense. 4WD, IMHO, has a LOT of overhead costs, that 2WD just doesn't
have, which is why I love 2WD over both FWD and 4WD and AWD (but to each
his own on that decision).

As for my Android, today I solved (sort of) the Genymotion problem.

My 20/20 hindsight to you is "Don't use the Genymotion S9 emulator!".
My irksome problem was that I _started_ with that emulator. 
It failed EVERY time (I spent HOURS on it!).
 <https://groups.google.com/d/msg/comp.mobile.android/ix9empN-mxg/GvBpgIkOAwAJ>

Then, I tried a half dozen others, and they ALL worked just fine.
Had I not started with the S9, I'd be saying how great Genymotion is.
Sigh. 20/20 hindsight.
 <http://www.bild.me/bild.php?file=9646339genymotion15.jpg>

The Genymotion emulator is the cat's meow, when it works though.
It's BEAUTIFULLY integrated into Android Studio, for example.
And it's FAST! (real fast!)

So far, I have the following tests done (in this order).
 <http://www.bild.me/bild.php?file=8909620genymotion16.jpg>

Works (using Genymotion 2.12.2 with VirtualBox 5.2.14 on Win10 1803):
o API 16, Jelly Bean: HTC One X - 4.11 - API 16 - 720x1280
o API 18, Jelly Bean: Samsung Galaxy S3 - 4.3 - API 18 - 729x1280
o API 19, KitKat: Motorola Moto X - 4.4.4 - API 19 - 720x1280
o API 21, Lollipop: Google Nexus 4 - 5.0.0 - API 21 - 768x1280
o API 23, Marshmallow: Samsung Galaxy S7 - 6.0.0 - API 23 - 1440x2560
o API 24, Nougat: Samsung Galaxy S8 - 7.0.0 - API 24 - 1440x2960 
o API 25, Nougat: Google Nexus 6 - 7.1.0 - API 25 - 1440x2560

Fails (using Genymotion 2.12.2 with VirtualBox 5.2.14 on Win10 1803):
o API 26, Oreo: Samsung Galaxy S9 - 8.0 - API 26 - 1440x2960
o API 28, Pie: Google Pixel XL - 9.0 (preview) - API 28 - 1440x2560

The bad news is that I _started_ with the S9, where I spent hours trying to
get it to work before I decided to try the others. :(

The error message is most likely a red herring.
If I knew what I know now, I would have just used one of the others.

The great news is that there are a LOT of Genymotion emulators, 
so, at some point, I hope to report that I have Android 8 emulated.

I'm going to look up how to downgrade an app once it's built to a
particular SDK version, so that it works on a lower SDK version. 
I'll report back when I have something to report.

[toc] | [prev] | [next] | [standalone]


#57851

FromBill <Billaboard@gmail.com>
Date2018-11-24 23:48 +0000
Message-ID<eNjHk00NNe+bFwkC@end.of.the.universe>
In reply to#57774
In message <pt5krl$qgh$1@news.mixmin.net>, arlen michael holder 
<arlen_michael_holder@example.com> writes
>On Wed, 21 Nov 2018 17:04:42 +0000, Bill wrote:
>
>> I've done a bit with OBD2 diagnostics.
>
<Snip>
>
>> Now I'm on a 2004 Range Rover, where I use some
>> BMW diagnostics into a laptop.
>
>Yup. I know my bimmer well. Ediabas is the main interface.
>It's a pain because the software was meant for RS232 serial ports.
>Which you can't find anymore (not easily).
>
>So we use adapters from the laptop USB port to the OBDII port.
>
>Most of us use Inpa, but we all have NCS Expert, NCS Dummies, DIS/GT1,
>EasyDIS, and Progman (for programming one of the dozen or so Electronic
>Control Units in the E39 (which is what I own).
>
>The great thing is that this is the same stuff the factory and dealer use.
>The bad thing is a lot of it is still in German. :)
>
>You probably know all this stuff. I have pointers to ALL the software if
>you need it. I have everything, but it has been YEARS since I had to
>download it so I hope it's still there as that stuff tends to die out.

I use something called BMW Scanner v 1.4, which seems pretty good. I 
have got INPA, but haven't yet installed it. I must try to get round to 
it. The Rangie is similar to an X5, which is E53, I believe.
>
>> The Rangie has just had its annual MOT test and had a bit of suspension
>> work and a new tyre.
>
>Yup. Those smog tests on older cars are sometimes a PITA to pass.
>And suspension work is, often, a PITA too!
>
>I'm currently honing my skills for suspension alignment.
>While most people have an outdated opinion of both mounting & balancing
>tires and doing an alignment at home, the reality is that the tools are
>getting better and cheaper and more available by the day!
>
>Just as we can now repair, mount and balance tires at home for an outlay in
>tool costs that is amortized over about 3 or 4 sets of tires, the same is
>happening for alignment.
>
>On the problem is tremendously different, where, again, you'll hear
>everyone say the outdated words that they can't do it - but it turns out to
>be eminently possible.
>
>I have a recent thread, for example, on the Android  tools for doing an
>alignment at home over here...
> 
><https://groups.google.com/forum/#!msg/alt.home.repair/aPbvm5vRti0/kUaNV
>tBhAgAJ>
>
>
>> This meant it had to be jacked up which, as you may
>> know, means the air suspension loses all touch with reality and has to
>> be reset electronically.
>
>Actually, I don't have fancy "air" suspension. I have struts.
>So that's too bad that you have to reset it.

My other car (Skoda) has springs. 2 broke and have just been replaced. 
Son has a Merc and he has had 3 broken springs. There is some problem 
with quality with these European ( as opposed to British) springs.
>
>> The mechanic has several very expensive
>> diagnostic tools, but nothing that would work with either the Jeep or
>> Range Rover, so he does the work and brings it back to me for the
>> electronics to be set up again.
>
>Wow. That's not good. I'm glad I don't have that problem.
>What a pain.
>
>> Unfortunately, today's reset hasn't
>> worked and one corner droops, so it's back to him to find what has
>> fallen off or burst.
>
>Yikes. Again, I'm glad I don't have to deal with that.

I spent most of this morning printing out relevant pages from the 
workshop manual so he has no excuse. I'm hoping it's just a height 
sensor come adrift.
>
>> This is exactly where a camera snake app would be excellent, allowing me
>> to inspect the underpinnings without having to crawl.
>
>Yup. Do you already have the snake camera? If so, didn't it come with an
>app? (Mine did.)
>
I have a snake camera  with light meant for pushing down to inspect 
drains. It's pretty mediocre. Also an older gooseneck  mounted "webcam", 
where the camera is at right angles to the gooseneck "snake". It's the 
camera I've used for years taped to the gutter of the 110 or Disco 
pointing down at the tow hitch when we used to hitch up and tow our boat 
and fishing boats to the crane to be craned in or out of the dock. 
Trailer hitch types were all different and heights all over the place.

A webcam taped to a piece of wood works as well, and there is room for 
lighting beside it. I think all my cameras are pre-Android, so no apps 
came with them.

>> I've just been
>> reading about some big square bright 12 volt LED panels that would be
>> ideal to throw under the car to illuminate the problems.
>
>Yup. I have Costco LED garage lights that I put to each side of the car
>when I'm working in the garage. They are meant for the ceiling, but they
>work on the floor perfectly! :)
>
>They light up the underside of the car like it's daylight.
>
>> ** Only needed to tow the 3 ton boat we built - now given to my son, so
>> the need for 4WD and low range gears has gone.
>
>Makes sense. 4WD, IMHO, has a LOT of overhead costs, that 2WD just doesn't
>have, which is why I love 2WD over both FWD and 4WD and AWD (but to each
>his own on that decision).

It was the low range that I used rather than the 4WD. One problem with 
the Jeep was that its low range always locked front and rear 
transmissions together, so the suspension would wind up on the mixed 
rough grass and tarmac boatyard areas. The Land Rover products all 
allowed unlocking or controlled slippage of the centre diff. I don't 
think anyone makes a 2WD low range vehicle, unfortunately.
A hybrid electric vehicle would presumably lessen the need for 4WD but, 
for some reason the electric equivalents of big 4X4's all have a much 
lower towing capacity than the petrol or diesels. Anyway, they are too 
new and expensive.
>
>As for my Android, today I solved (sort of) the Genymotion problem.
>
>My 20/20 hindsight to you is "Don't use the Genymotion S9 emulator!".
>My irksome problem was that I _started_ with that emulator.
>It failed EVERY time (I spent HOURS on it!).
> <https://groups.google.com/d/msg/comp.mobile.android/ix9empN-mxg/GvBpgIkOAwAJ>
>
>Then, I tried a half dozen others, and they ALL worked just fine.
>Had I not started with the S9, I'd be saying how great Genymotion is.
>Sigh. 20/20 hindsight.
> <http://www.bild.me/bild.php?file=9646339genymotion15.jpg>
>
>The Genymotion emulator is the cat's meow, when it works though.
>It's BEAUTIFULLY integrated into Android Studio, for example.
>And it's FAST! (real fast!)
>
>So far, I have the following tests done (in this order).
> <http://www.bild.me/bild.php?file=8909620genymotion16.jpg>
>
>Works (using Genymotion 2.12.2 with VirtualBox 5.2.14 on Win10 1803):
>o API 16, Jelly Bean: HTC One X - 4.11 - API 16 - 720x1280
>o API 18, Jelly Bean: Samsung Galaxy S3 - 4.3 - API 18 - 729x1280
>o API 19, KitKat: Motorola Moto X - 4.4.4 - API 19 - 720x1280
>o API 21, Lollipop: Google Nexus 4 - 5.0.0 - API 21 - 768x1280
>o API 23, Marshmallow: Samsung Galaxy S7 - 6.0.0 - API 23 - 1440x2560
>o API 24, Nougat: Samsung Galaxy S8 - 7.0.0 - API 24 - 1440x2960
>o API 25, Nougat: Google Nexus 6 - 7.1.0 - API 25 - 1440x2560
>
>Fails (using Genymotion 2.12.2 with VirtualBox 5.2.14 on Win10 1803):
>o API 26, Oreo: Samsung Galaxy S9 - 8.0 - API 26 - 1440x2960
>o API 28, Pie: Google Pixel XL - 9.0 (preview) - API 28 - 1440x2560
>
>The bad news is that I _started_ with the S9, where I spent hours trying to
>get it to work before I decided to try the others. :(
>
>The error message is most likely a red herring.
>If I knew what I know now, I would have just used one of the others.
>
>The great news is that there are a LOT of Genymotion emulators,
>so, at some point, I hope to report that I have Android 8 emulated.
>
>I'm going to look up how to downgrade an app once it's built to a
>particular SDK version, so that it works on a lower SDK version.
>I'll report back when I have something to report.

I'm just sticking with the inbuilt Android emulator as it works for me. 
I've also been trying to build everything down to Android 4, as I have 
tablet and phone of that generation as well as the Android 6 test phone.
-- 
Bill

---
This email has been checked for viruses by AVG.
https://www.avg.com

[toc] | [prev] | [next] | [standalone]


#57568

Fromarlen michael holder <arlen_michael_holder@example.com>
Date2018-11-16 05:08 +0000
Message-ID<psljc1$9an$1@news.mixmin.net>
In reply to#57362
On Sat, 10 Nov 2018 10:43:10 +0000, Bill wrote:

> I have now got through the text based button and message build, which 
> works, and am starting on the first Butterfield video.

Hi Bill,

Heads up!

I just finished the last Butterfield video (number 4 of 4). 
Do NOT do it! 

It's completely different in character from the previous 3.
Don't even _think_ of doing it. Really. 

I don't think _anyone_ (at our stage) can be successful with it.
You need to set up a SQL server which he doesn't cover at all!
And he skips steps like you can't believe!
He never even scrolls through the final code so you can check for errors.

It's just not worth the effort. 
I wish I knew that before I went through every step, but I know that now.

Everything below is simply detail on the information above.
Don't do that fourth Butterfield product. Let's find another that's better.
============================================================================
o Android Studio For Beginners Part 1, 2, 3, 4 by Bill Butterfield, 
  Published on Jun 13, 2017 
  https://youtu.be/dFlPARW5IX8 (part 1) a simple adder
  https://youtu.be/6ow3L39Wxmg (part 2) call a program outside the app
  https://youtu.be/rdGpT1pIJlw (part 3) grocery list
  https://youtu.be/bu5Y3uZ6LLM (part 4) mysql grocery list
============================================================================
The first three videos are fantastic, but the fourth is almost impossible.
o You need to set up an sql server and database on port 3306
o You need to obtain & set up oracle mysql workbench
o You need to add .NET Framework & Visual C++ runtimes if you don't have them
o His video is mysql version 3 but the current version is version 8
o You need to import the java connector jar file library as a module
o He cuts and pastes entire files during the video without scrolling!
o That's critical since you can't follow easily what he's doing.

This last video is NOTHING like the prior 3 videos in terms of handholding!
============================================================================
Some of the software you need will be:
============================================================================
JDBC Driver for MySQL (Connector/J)
 https://dev.mysql.com/downloads/connector/j/
 Hit "Platform Independent" in the selector.
 That gives a tar ball and a zip archive. 
 Obviously get the zip archive.
 Platform Independent (Architecture Independent), ZIP Archive	8.0.13	6.4M	
 Download (mysql-connector-java-8.0.13.zip)
 MD5: a106e8c50a616b93ce28a6f7cb991586 

https://dev.mysql.com/downloads/file/?id=480292
 Begin Your Download
 mysql-connector-java-8.0.13.zip
 https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-8.0.13.zip
============================================================================
Unzip and move the mysql-connector-java-8.0.13 folder to
 C:\app\editor\android\sql\mysql-connector-java-8.0.13\

 Make a note of the path (as you'll need it later):
 C:\app\editor\android\sql\mysql-connector-java-8.0.13\mysql-connector-java-8.0.13.jar
============================================================================
My Sequel Workbench
 https://dev.mysql.com/downloads/workbench/
 Windows (x86, 64-bit), MSI Installer 	8.0.13 	33.6M 	
 Download
 (mysql-workbench-community-8.0.13-winx64.msi)
 MD5: 298f374a2a032bf5148fc4909a2dcab1 | Signature

https://dev.mysql.com/downloads/file/?id=480542
 https://cdn.mysql.com//Downloads/MySQLGUITools/mysql-workbench-community-8.0.13-winx64.msi

Requires:
o Microsoft .NET Framework 4.5
  https://www.microsoft.com/en-us/download/details.aspx?id=30653
  https://download.microsoft.com/download/B/A/4/BA4A7E71-2906-4B2D-A0E1-80CF16844F5F/dotNetFx45_Full_setup.exe
o Visual C++ Redistributable for Visual Studio 2015
  https://www.microsoft.com/en-us/download/details.aspx?id=48145
  https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x64.exe
  https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x86.exe
============================================================================
Importing the jar file is pretty easy though:
 AndroidStudio321: Right click on app > new > module > import JAR/.AAR Package
 C:\app\editor\android\sql\mysql-connector-java-8.0.13\mysql-connector-java-8.0.13.jar
============================================================================
Even if you get the program to work, you _still_ need to set up a SQL server!
============================================================================
Here are the main files at the point that I gave up (after about 2 hours).

o C:\tmp\android\app07\app\src\main\AndroidManifest.xml
o C:\tmp\android\app07\app\src\main\java\com\kiss\app07\mainActivity.java
o C:\tmp\android\app07\app\src\main\java\com\kiss\app07\ItemAdapter.java
o C:\tmp\android\app07\app\src\main\java\com\kiss\app07\DbStrings.java
o C:\tmp\android\app07\app\build.gradle
o C:\tmp\android\app07\app\src\main\res\layout\item_layout.xml
o C:\tmp\android\app07\app\src\main\res\layout\activity_main.xml
============================================================================
C:\tmp\android\app07\app\src\main\AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.kiss.app07">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
============================================================================
C:\tmp\android\app07\app\src\main\java\com\kiss\app07\mainActivity.java

package com.kiss.app07;

import android.content.Context;
import android.content.res.Resources;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextClock;
import android.widget.TextView;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.LinkedHashMap;
import java.util.Map;

public class MainActivity extends AppCompatActivity {

    ItemAdapter itemAdapter;
    Context thisContext;
    ListView myListView;
    TextView progressTextView;
    Map<String>, Double> fruitsMap = new LinkedHashMap<String>, Double>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Resources res = getResources();
        myListView = (ListView) findViewById(R.id.myListView);
        progressTextView = (TextView) findViewById(R.id.progressTextView);
        thisContext = this;

        progressTextView.setText("");
        Button btn = (Button) findViewById(R.id.getDataButton);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                GetData retrieveData = new GetData();
                retrieveData.execute("");
            }
        });
            }
        };
    }

    private class GetData extends AsyncTask<String, String, String> {
        String msg = "";
        // JDBC drivr name and database URL
        static final String JDBC_DRIVER = "com.kill.app07.Driver";
        // Example: 10.20.30.40:3306
        static final String DB_URL = "jdbc:mysql://" +
                DbStrings.DATABASE_URL + "/" +
                DbStrings.DATABASE_NAME;

        @Override
        protected void onPreExecute() {
            progressTextView.setText("Connecting to database...");
        }

        @Override
        protected String doInBackground(String...params) {

            Connection conn = null;
            Statement stmt = null;

            try {
                Class.forName(JDBC_DRIVER);
                conn = DriverManager.getConnection(DB_URL, DbStrings.USERNAME, DbStrings.PASSWORD);

                stmt = conn.createStatement();
                String sql = "SELECT * FROM fruits";
                ResultSet rs = stmt.executeQuery(sql);

                while (rs.next()) {
                    String name = rs.getString("name");
                    double price = rs.getDouble("price");

                    fruitsMap.put(name, price);
                }

                msg = "Process complete.";

                rs.close();
                stmt.close();
                conn.close();

            } catch (SQLException connError) {
                msg = "An exception was thorn for JDBC.";
                connError.printStackTrace();
                ;
            } catch (ClassNotFoundException e) {
                msg = "A class not found exception was thrown.";
                e.printStackTrace();
            } finally {

                try {
                    if (stmt != null) {
                        stmt.close();
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                try {
                    if (conn != null) {
                        conn.close();
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }

            }

            return null;
        }

        @Override
        protected void onPostExexute (String msg){

            progressTextView.setText(this.msg);

            if (fruitsMap.size() > 0) {

                itemAdapter = new ItemAdapter(thisContext, fruitsMap);
                myListView.setAdapter(itemAdapter);
            }

        }

} //End of MainActivity
============================================================================
C:\tmp\android\app07\app\src\main\java\com\kiss\app07\ItemAdapter.java

package com.kiss.app07;

        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 com.kiss.app07.R;

        import java.util.ArrayList;
        import java.util.List;
        import java.util.Map;

/**
 * Created by Example on 11/15/2018.
 */

public class ItemAdapter extends BaseAdapter {

    LayoutInflater  mInflator;
    Map<String, Double> map;
    List<String> names;
    List<Double> prices;

    public ItemAdapter(Context c, Map m) {
        mInflator = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        map = m;
        names = new ArrayList<String>(map.keySet());
        prices = new ArrayList<Double>(map.values());
    }

    @Override
    public int getCount() {
        return map.size();
    }

    @Override
    public Object getItem(int i) {
        return names.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View convertView, ViewGroup parent) {

        View v = mInflator.inflate(R.layout.item_layout, null);
        TextView nameTextView = (TextView) v.findViewById(R.id.nameTextView);
        TextView priceTextView = (TextView) v.findViewById(R.id.priceTextView);

        nameTextView.setText(names.get(i));
        priceTextView.setText("$" + prices.get(i).toString());

        return v;
    }
}
============================================================================
C:\tmp\android\app07\app\src\main\java\com\kiss\app07\DbStrings.java

package com.kiss.app07;

public class DbStrings {

    static final String DATABASE_URL = "129.0.0.1:3306";
    static final String DATABASE_NAME = "mhs_example";
    static final String USERNAME = "some_user";
    static final String PASSWORD = "your_password";
}
============================================================================
C:\tmp\android\app07\app\build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.kiss.app07"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

    compile project (':mysql-connector-java-8.0.13')
}
============================================================================
C:\tmp\android\app07\app\src\main\res\layout\item_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">

    <TextView
        android:id="@+id/nameTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginStart="24dp"
        android:layout_marginTop="35dp"
        android:layout_marginBottom="35dp"
        android:text="Name" />

    <TextView
        android:id="@+id/priceTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/nameTextView"
        android:layout_alignParentEnd="true"
        android:layout_marginEnd="63dp"
        android:text="Price" />
</RelativeLayout>
============================================================================
C:\tmp\android\app07\app\src\main\res\layout\activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/getDataButton"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:text="Get Data"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/progressTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:text="Progress"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/getDataButton" />

    <ListView
        android:id="@+id/myListView"
        android:layout_width="368dp"
        android:layout_height="412dp"
        android:layout_marginBottom="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />
</android.support.constraint.ConstraintLayout>
============================================================================
============================================================================

[toc] | [prev] | [next] | [standalone]


#56946

FromDiesel <me@privacy.net>
Date2018-10-31 05:51 +0000
Message-ID<XnsA98C14E62C3AFHT1@3Y3w3.zZV3L2KG.TO>
In reply to#56940
Arlen    Holder <a%rlenh.older@no.spam.net>
news:pracn5$el0$1@news.mixmin.net Tue, 30 Oct 2018 19:51:20 GMT in
alt.comp.freeware, wrote: 

>> But, it took me a whole afternoon on a i5-2520M laptop with 
>> 8GB of ram, and during that time everything else on the machine
>> became almost totally unresponsive. 
> 
> Truth be told, all DIYs are "idealized" in that they take longer
> than the person said they did, where my initial efforts also took
> longer. 
> 
>  I just said an hour as a guess, but I let it run and so the
>  elapsed time 
> was overnight but I didn't calculate exactly how much time was
> idle so I "assumed" about an hour of actual actions (but it was
> likely longer). 
> 
> In reality, I agree with you that it takes longer, so double that,
> or triple that or something, but Diesel's assessment of '20
> minutes' is just dead wrong, and unachievable, I would think.
> (Diesel is always trying to prove how smart he is so take anything
> he says with a grain of salt.) 

Incorrect. Are either of you familiar with 8th and now, 9th gen 
unlocked Intel processors? You both might want to educate yourselfs a 
bit. Lookup the specs to an i7-8700K and tell me I'm full of shit, 
again. :) Not only that, but I've got full (as in, actually have it) 
100mbit cable modem to house and office. I'm not pissing in the wind 
on DSL  or wifi here, I've got real bandwidth and I'm about to have 
1gbit capacity at both places very soon. Essentially as soon as the 
new modems get here and I install them.

> I have no desire to prove I'm smart, so I have no problems
> admitting when I screw up, or when I'm wrong, or when I'm ignorant
> of something, so you can trust me more than you can trust most
> people who can't admit when they're stupid.

You might want to use a dictionary and lookup the word stupid. Then 
lookup the word, Dumb. Everyone suffers from the latter in something, 
but, if you suffer from the former, there's no fix for that. And I 
can't very well do what I've done for a living (decades) if I were 
stupid.
 
> If I were to have a gun put to my head, I'd assess the time at,
> oh, a "few" hours, so the "whole afternoon" seems reasonable to
> me, as it does have to download and then unpack a _lot_ of stuff
> the first time around (and the Google site is super
> sloooooooooooooooooow where it gets stuff from). 
> 
>> The processor appears to support HAXM, but 
>> I missed the place to check to install this.
> 
> I first had HAXM (whatever that is) turned on by Android Studio by
> default, and then I had to turn it off so when I re-installed
> Android Studio (which takes less time than the first install
> because the SDK is already there by then), I turned off the HAXM
> (whatever that is). 

Your box can't support HAXM regardless of you having it turned on, or 
off. And you call me stupid? Yea.. okay.
 
> I have no idea what HAXM is, by the way, and I didn't google it
> because HAXM isn't what I want to do right now. If you have a clue
> what HAXM is, and how to tell if my machine has it, that would be
> useful, but don't go to any trouble unless you already know
> offhand as I could look it up. 

You *can't* 'do HAXM'. it's NOT a feature of AMD, shit for brains. 
It's an Intel thing.
 
> The zip files from Google take a looooooooooong time to download.
> I just walked away and came back later, so my _elapsed_ time was
> likely as long as yours was (I didn't actually count the time).

Because of your particular connection to the internet, it took so 
long. I'm using full on 100mbit here. My dl/ul speeds are nothing 
like yours. I could easily (as in, seriously, easily) overload your 
connection and saturate your happy ass with a simple ping flood and I 
wouldn't even notice the loss of bandwidth. I wouldn't actually do 
something as trivial and lame, but, I could. easily enough.

>> Can I ask the spec of your old desktop?
> 
> Sure. Ask anything. We can help each other.
> 
> My old desktop has 16GB of RAM, so that's the one good thing, and
> it's Win10, so that's another good thing, but everything else is
> just old. It's an HP Pavilion P6230, 2.6Hhz, AMD Phenom2 CPU, with
> an Nvidia graphics card. Nothing fancy.

*puke* it's a pile of shit.

 
> If we can work together on something like this, or if others have
> a suggestion, it would be nice to get a handful of interested
> folks to pick a SIMPLE action (like ring a bell) and then work
> together toward that goal. 

You might be able to do that, if you can keep your unprofessional 
personal attacks at bay.
 


-- 
To prevent yourself from being a victim of cyber
stalking, it's highly recommended you visit here:
https://tekrider.net/pages/david-brooks-stalker.php
===================================================
The most beautiful adventures aren't those we go to seek-
R.L.Stevenson

[toc] | [prev] | [next] | [standalone]


#56966

From"BurfordTJustice" <burford/associate@uk.MI15>
Date2018-10-31 07:11 -0400
Message-ID<prc2k9$1gh$1@dont-email.me>
In reply to#56946
past name calling you have nothing as usual...LOL!!




"Diesel" <me@privacy.net> wrote in message 
news:XnsA98C14E62C3AFHT1@3Y3w3.zZV3L2KG.TO...
: Arlen    Holder <a%rlenh.older@no.spam.net>
: news:pracn5$el0$1@news.mixmin.net Tue, 30 Oct 2018 19:51:20 GMT in
: alt.comp.freeware, wrote:
:
: >> But, it took me a whole afternoon on a i5-2520M laptop with
: >> 8GB of ram, and during that time everything else on the machine
: >> became almost totally unresponsive.
: >
: > Truth be told, all DIYs are "idealized" in that they take longer
: > than the person said they did, where my initial efforts also took
: > longer.
: >
: >  I just said an hour as a guess, but I let it run and so the
: >  elapsed time
: > was overnight but I didn't calculate exactly how much time was
: > idle so I "assumed" about an hour of actual actions (but it was
: > likely longer).
: >
: > In reality, I agree with you that it takes longer, so double that,
: > or triple that or something, but Diesel's assessment of '20
: > minutes' is just dead wrong, and unachievable, I would think.
: > (Diesel is always trying to prove how smart he is so take anything
: > he says with a grain of salt.)
:
: Incorrect. Are either of you familiar with 8th and now, 9th gen
: unlocked Intel processors? You both might want to educate yourselfs a
: bit. Lookup the specs to an i7-8700K and tell me I'm full of shit,
: again. :) Not only that, but I've got full (as in, actually have it)
: 100mbit cable modem to house and office. I'm not pissing in the wind
: on DSL  or wifi here, I've got real bandwidth and I'm about to have
: 1gbit capacity at both places very soon. Essentially as soon as the
: new modems get here and I install them.
:
: > I have no desire to prove I'm smart, so I have no problems
: > admitting when I screw up, or when I'm wrong, or when I'm ignorant
: > of something, so you can trust me more than you can trust most
: > people who can't admit when they're stupid.
:
: You might want to use a dictionary and lookup the word stupid. Then
: lookup the word, Dumb. Everyone suffers from the latter in something,
: but, if you suffer from the former, there's no fix for that. And I
: can't very well do what I've done for a living (decades) if I were
: stupid.
:
: > If I were to have a gun put to my head, I'd assess the time at,
: > oh, a "few" hours, so the "whole afternoon" seems reasonable to
: > me, as it does have to download and then unpack a _lot_ of stuff
: > the first time around (and the Google site is super
: > sloooooooooooooooooow where it gets stuff from).
: >
: >> The processor appears to support HAXM, but
: >> I missed the place to check to install this.
: >
: > I first had HAXM (whatever that is) turned on by Android Studio by
: > default, and then I had to turn it off so when I re-installed
: > Android Studio (which takes less time than the first install
: > because the SDK is already there by then), I turned off the HAXM
: > (whatever that is).
:
: Your box can't support HAXM regardless of you having it turned on, or
: off. And you call me stupid? Yea.. okay.
:
: > I have no idea what HAXM is, by the way, and I didn't google it
: > because HAXM isn't what I want to do right now. If you have a clue
: > what HAXM is, and how to tell if my machine has it, that would be
: > useful, but don't go to any trouble unless you already know
: > offhand as I could look it up.
:
: You *can't* 'do HAXM'. it's NOT a feature of AMD, shit for brains.
: It's an Intel thing.
:
: > The zip files from Google take a looooooooooong time to download.
: > I just walked away and came back later, so my _elapsed_ time was
: > likely as long as yours was (I didn't actually count the time).
:
: Because of your particular connection to the internet, it took so
: long. I'm using full on 100mbit here. My dl/ul speeds are nothing
: like yours. I could easily (as in, seriously, easily) overload your
: connection and saturate your happy ass with a simple ping flood and I
: wouldn't even notice the loss of bandwidth. I wouldn't actually do
: something as trivial and lame, but, I could. easily enough.
:
: >> Can I ask the spec of your old desktop?
: >
: > Sure. Ask anything. We can help each other.
: >
: > My old desktop has 16GB of RAM, so that's the one good thing, and
: > it's Win10, so that's another good thing, but everything else is
: > just old. It's an HP Pavilion P6230, 2.6Hhz, AMD Phenom2 CPU, with
: > an Nvidia graphics card. Nothing fancy.
:
: *puke* it's a pile of shit.
:
:
: > If we can work together on something like this, or if others have
: > a suggestion, it would be nice to get a handful of interested
: > folks to pick a SIMPLE action (like ring a bell) and then work
: > together toward that goal.
:
: You might be able to do that, if you can keep your unprofessional
: personal attacks at bay.
:
:
:
: -- 
: To prevent yourself from being a victim of cyber
: stalking, it's highly recommended you visit here:
: https://tekrider.net/pages/david-brooks-stalker.php
: ===================================================
: The most beautiful adventures aren't those we go to seek-
: R.L.Stevenson 

[toc] | [prev] | [next] | [standalone]


#56964

FromBill <Billaboard@gmail.com>
Date2018-10-31 10:54 +0000
Message-ID<q4haJM5mnY2bFwB+@end.of.the.universe>
In reply to#56940
In message <pracn5$el0$1@news.mixmin.net>, Arlen Holder 
<a%rlenh.older@no.spam.net> writes
>On Tue, 30 Oct 2018 00:14:40 +0000, Bill wrote:
>
>> Thanks, Arlen, for posting this. I hadn't heard about it before, and it
>> looks as though it might be useful as a way to knock up one or two
>> specialist apps in the future.
>
>Thank you Bill for posting that it helped you, as that's my goal, which is
>to help everyone at the same time that I help myself. I've always been that
>way, so I'm completely different than most people who are only about
>themselves.
>
>Maybe we can help each other.

That all sounds good, and I'm happy to give it a go, although I'm unsure 
how much I can contribute.
Just so we understand each other, I am not young and in the '70'sgot in 
to building hardware based devices using Z80 and earlier processors. I 
bypassed cp/m and worked with MS based PC's for years, doing some C++ 
(related to broadcasting work) programming, then retired.
Since then, I have spent some time helping friends with their PC 
problems and, more recently, reviving decrepit laptops to give to family 
and friends when they had computing emergencies. Currently we have a 
family crisis and are looking after an awkward elderly relative, so I'm 
dividing my time between urgently trying to clear the house of years of 
accumulated computer, boatbuilding and musical junk and trying to keep 
vaguely up to date with things - hence my interest in trying to learn 
about Android. I should have time to do and learn something, but there 
are long periods when life gets in the way.


>I am hoping to use Android Studio to write a "beep in ten minutes app".
>
>Here's my current status of the "hello world" in Android Studio:
> <http://www.bild.me/bild.php?file=9210567androidstudio05.jpg>
>Where this is the result on the Android Nougat 7.0 LG Stylo 3 Plus:
> <http://www.bild.me/bild.php?file=2116419androidstudio06.jpg>
>
>I haven't spent a lot of time with Android Studio (just that first hello
>world), but I'm willing to get the first app to work, which, I hope to be a
>simple timer app that has the fewest buttons possible, and that goes away
>and of course, no ads, no servers, no spyware, nothing but the basic app.
>- Press here to beep in 5 minutes (and then go away until beep).
>- Press here to beep in 10 minutes (and then go away until beep).
>- Press here to beep in 30 minutes (and then go away until beep).
>- Press here to beep in 1 hour (and then go away until beep).
>- Enter the time to beep [___]minutes (and then go away until beep).
>etc.

That all sounds like something I would be interested in "helping" with.
>
>The _great_ news about Android Studio is that it literally _writes_ your
>first app for you and puts it on your phone, and the app actually works!
>
>From there, it's learning how to add bits and buttons. :)
>Layout file:
>Source file:

Yes. Latterly with C++, I used Borland C++ Builder, which helped with 
the heavy lifting in a similar way.
>
>> I tried building the Hello World app and got it working without any
>> problems.
>
>Good for you. I can't get the emulation to work on my old Win10 desktop.
> <http://www.bild.me/bild.php?file=5625744androidstudio01.jpg>
>But the app works perfectly on the phone (Nougat LG Stylo 3 Plus, 64GB).
>
>Here's the error I get during emulation:
> <http://www.bild.me/bild.php?file=3629764androidstudio03.jpg>
>o Emulator: emulator: ERROR: x86 emulation currently requires hardware 
>acceleration!
>o Emulator: Warning: Quick Boot / Snapshots not supported on this 
>machine. A CPU with EPT + UG features is currently needed. We will 
>address this in a future release.
>o Emulator: Process finished with exit code 1
>o Gradle build finished in 1 m 15 s 77 ms

I have it working both on the Android 6 phone ( cheap generic badged 
THL) and the emulator. The current base machine is, indeed, an Intel 
based Lenovo X220T (tablet) laptop, but see below. I suspect that the 
hardware acceleration referred to is the HAXM feature of Intel.
>
<Snip>
>
>I have no desire to prove I'm smart, so I have no problems admitting when I
>screw up, or when I'm wrong, or when I'm ignorant of something, so you can
>trust me more than you can trust most people who can't admit when they're
>stupid.
>
I'm ignorant of most Android's workings, and also have always had a 
terrible memory, so am very likely to appear slow most of the time.
>
>I'm working on simply getting the "hello world" button to beep.
> <https://developer.android.com/training/basics/firstapp/building-ui>
>Here's the crappy look at the moment, but it's my first button.
> <http://www.bild.me/bild.php?file=3610557androidstudio04.jpg>
>The buttons don't do anything yet, but they'll eventually ring an alarm:
> <http://www.bild.me/bild.php?file=2116419androidstudio06.jpg>
>
>If we can work together on something like this, or if others have a
>suggestion, it would be nice to get a handful of interested folks to pick a
>SIMPLE action (like ring a bell) and then work together toward that goal.
>
>That would make Usenet very useful, don't you think?

I have, in the past, worked with other people, but usually via email. It 
would be interesting to see if this could work on usenet. If we did 
this, I think the cross-posting might be a problem. I am only on 
comp.mobile.android.

I haven't done anything more with Android Studio, but today's plan is to 
install from scratch on a different machine (older generation Intel i3 
processor) to free up the main machine again. This will take time!
-- 
Bill

---
This email has been checked for viruses by AVG.
https://www.avg.com

[toc] | [prev] | [next] | [standalone]


#57028

From Arlen_Holder <a%rle%20nh.older@no.spam.net>
Date2018-11-02 03:33 +0000
Message-ID<prggi2$4ir$1@news.mixmin.net>
In reply to#56964
On Wed, 31 Oct 2018 10:54:30 +0000, Bill wrote:

>  hence my interest in trying to learn 
> about Android. I should have time to do and learn something, but there 
> are long periods when life gets in the way.

Hi Bill,
We're in the same boat, give or take, just on opposite sides of the pond.

Do you have a tablet?
o Is it Android (then it will be easy to use to get the tutorial videos)
o Or, is it iOS (like mine is, which means everything is a _lot_ harder)

Or, can you put two monitors side by side, from two different desktops?

If you have a tablet, you can download the 8 sets of tutorial videos onto
that tablet using the youtube-dl.exe Windows freeware (plus ffmpeg & C++
freeware).

For example, what I'm doing now, since my monitor is downright puny, is I
will download all those videos, en masse, and then boot momentarily to
Ubuntu 18.04, which allows me to slide the videos over to the iPad which
mounts read/write on Ubuntu essentially as a USB drive. (If your tablet is
Android, you won't have to deal with that issue of turning the iPad into a
read/write USB drive as Android already acts like a read/write USB drive
when connected to Windows).

The process for installing youtube-dl.exe is a bit complex, unfortunately:
1. Install Microsoft Visual C++ 2010 Redistributable Package (x86)
    <https://www.microsoft.com/en-US/download/details.aspx?id=5555>
2. Upate Microsoft Visual C++ 2010 Service Pack 1 Redistributable Package MFC Security Update
    <https://www.microsoft.com/en-us/download/details.aspx?id=26999>
3. Get ffmpeg
    <http://ffmpeg.zeranoe.com/builds/>
    Put the three executables in the same directory as the youtube-dl.exe
    ffmpeg.exe
    ffplay.exe
    ffprobe.exe
4. Then get the right youtube-dl.exe that uses Visual C & not python!
    <https://youtube-dl.org/>
    <http://rg3.github.io/youtube-dl/download.html>
5. Then download a video as an OPUS file:
    youtube-dl.exe http://any_url.com
6. Download a video as an MP4 file:
    youtube-dl.exe -f 18 http://any_url.com
7. Download and extract just the audio as an M4A:
    youtube-dl.exe -f 140 http://any_url.com
8. Download and extract just the audio as an MP3:
    youtube-dl.exe -x --audio-format mp3 --audio-quality 0 http://any_ourl.com
9. Download the videos in a playlist text file:
    youtube-dl.exe -ciwo "%(title)s.%(ext)s" -a playlist.txt
    Where that playlist is a line-by-line set of URLs as shown below.
10. To download the 8 tutorials, you can run this freeware command:
    C:\> mkdir c:\tmp\android\video
    C:\> cd c:\tmp\android\video
    C:\> youtube-dl.exe -ciwo "%(title)s.%(ext)s" -a download.txt
    Where the "download.txt" file is the following set of 8 tutorials:
#
 https://youtu.be/_418iSKJuOk
# 
 https://youtu.be/EOfCEhWq8sg
#
 https://youtu.be/LN8fBh7LH9k 
 https://youtu.be/u5Gj-_ifxUo 
 https://youtu.be/axwFF4oSDi8 
 https://youtu.be/ASzpxZ504Es 
 https://youtu.be/GR_JtJWzh4Y 
#
  https://youtu.be/dFlPARW5IX8 
  https://youtu.be/6ow3L39Wxmg 
  https://youtu.be/rdGpT1pIJlw 
  https://youtu.be/bu5Y3uZ6LLM 
#
 https://youtu.be/agk01JKps8w 
 https://youtu.be/NSoFTHDHY40 
 https://youtu.be/fFzpWuHGyhc 
 https://youtu.be/gSRKhxuXTw4 
 https://youtu.be/g3jPYU9wCKg 
 https://youtu.be/G4SJFk8PdAc 
 https://youtu.be/e_Xe4sTWxTw 
 https://youtu.be/qS9rZV-Qbpk 
 https://youtu.be/8IZfYuTbCnY 
 https://youtu.be/A6YE5jadnGo 
 https://youtu.be/YeR2y3HdO1Q 
 https://youtu.be/z87fVhI4Yt0 
 https://youtu.be/xIwFd-u6yKw 
 https://youtu.be/wHA0AnURQ_M 
 https://youtu.be/nYqxyfKOXBw 
#
 https://youtu.be/oEgpGv2CF1U
#
 https://youtu.be/mAJeK283j0I
#
 https://youtu.be/-igAiudpBng
#

The reason for this effort is twofold:
o My monitor is too small to handle the videos & the IDE
o The videos show you what buttons to hit (the text tutorials don't)

If someone here has _experience_ in _learning_ Android, that would help,
where I've pretty much given up on the _text_ tutorials because I find I
spend ten seconds reading what to do, and then ten minutes searching for
the buttons they told us to hit.

The video tutorials at least show every button; but you have to be able to
start and stop them constantly, which is why it's handy to have them on the
iPad.

As you may be aware, everything sucks on iOS compared to Android, so if you
have an Android tablet, you can easily just download _any_ video you want
using NewPipe freeware on Android, which works _perfectly_.
 <https://f-droid.org/en/packages/org.schabi.newpipe/>

If you're on iOS, like I am, then everything sucks compared to Android,
when it comes to flexibility, power, functionality, and usefulness. Sigh.

[toc] | [prev] | [next] | [standalone]


#57060

FromBill <billaboard@gmail.com>
Date2018-11-02 19:51 +0000
Message-ID<pri9rc$sgi$1@dont-email.me>
In reply to#57028
On 02/11/2018 03:33, Arlen_Holder wrote:
> On Wed, 31 Oct 2018 10:54:30 +0000, Bill wrote:
>
>>  hence my interest in trying to learn
>> about Android. I should have time to do and learn something, but there
>> are long periods when life gets in the way.
>
> Hi Bill,
> We're in the same boat, give or take, just on opposite sides of the pond.
>
> Do you have a tablet?
> o Is it Android (then it will be easy to use to get the tutorial videos)
> o Or, is it iOS (like mine is, which means everything is a _lot_ harder)
>
> Or, can you put two monitors side by side, from two different desktops?
>
> If you have a tablet, you can download the 8 sets of tutorial videos onto
> that tablet using the youtube-dl.exe Windows freeware (plus ffmpeg & C++
> freeware).
>
> For example, what I'm doing now, since my monitor is downright puny, is I
> will download all those videos, en masse, and then boot momentarily to
> Ubuntu 18.04, which allows me to slide the videos over to the iPad which
> mounts read/write on Ubuntu essentially as a USB drive. (If your tablet is
> Android, you won't have to deal with that issue of turning the iPad into a
> read/write USB drive as Android already acts like a read/write USB drive
> when connected to Windows).
>
> The process for installing youtube-dl.exe is a bit complex, unfortunately:
> 1. Install Microsoft Visual C++ 2010 Redistributable Package (x86)
>     <https://www.microsoft.com/en-US/download/details.aspx?id=5555>
> 2. Upate Microsoft Visual C++ 2010 Service Pack 1 Redistributable Package MFC Security Update
>     <https://www.microsoft.com/en-us/download/details.aspx?id=26999>
> 3. Get ffmpeg
>     <http://ffmpeg.zeranoe.com/builds/>
>     Put the three executables in the same directory as the youtube-dl.exe
>     ffmpeg.exe
>     ffplay.exe
>     ffprobe.exe
> 4. Then get the right youtube-dl.exe that uses Visual C & not python!
>     <https://youtube-dl.org/>
>     <http://rg3.github.io/youtube-dl/download.html>
> 5. Then download a video as an OPUS file:
>     youtube-dl.exe http://any_url.com
> 6. Download a video as an MP4 file:
>     youtube-dl.exe -f 18 http://any_url.com
> 7. Download and extract just the audio as an M4A:
>     youtube-dl.exe -f 140 http://any_url.com
> 8. Download and extract just the audio as an MP3:
>     youtube-dl.exe -x --audio-format mp3 --audio-quality 0 http://any_ourl.com
> 9. Download the videos in a playlist text file:
>     youtube-dl.exe -ciwo "%(title)s.%(ext)s" -a playlist.txt
>     Where that playlist is a line-by-line set of URLs as shown below.
> 10. To download the 8 tutorials, you can run this freeware command:
>     C:\> mkdir c:\tmp\android\video
>     C:\> cd c:\tmp\android\video
>     C:\> youtube-dl.exe -ciwo "%(title)s.%(ext)s" -a download.txt
>     Where the "download.txt" file is the following set of 8 tutorials:
> #
>  https://youtu.be/_418iSKJuOk
> #
>  https://youtu.be/EOfCEhWq8sg
> #
>  https://youtu.be/LN8fBh7LH9k
>  https://youtu.be/u5Gj-_ifxUo
>  https://youtu.be/axwFF4oSDi8
>  https://youtu.be/ASzpxZ504Es
>  https://youtu.be/GR_JtJWzh4Y
> #
>   https://youtu.be/dFlPARW5IX8
>   https://youtu.be/6ow3L39Wxmg
>   https://youtu.be/rdGpT1pIJlw
>   https://youtu.be/bu5Y3uZ6LLM
> #
>  https://youtu.be/agk01JKps8w
>  https://youtu.be/NSoFTHDHY40
>  https://youtu.be/fFzpWuHGyhc
>  https://youtu.be/gSRKhxuXTw4
>  https://youtu.be/g3jPYU9wCKg
>  https://youtu.be/G4SJFk8PdAc
>  https://youtu.be/e_Xe4sTWxTw
>  https://youtu.be/qS9rZV-Qbpk
>  https://youtu.be/8IZfYuTbCnY
>  https://youtu.be/A6YE5jadnGo
>  https://youtu.be/YeR2y3HdO1Q
>  https://youtu.be/z87fVhI4Yt0
>  https://youtu.be/xIwFd-u6yKw
>  https://youtu.be/wHA0AnURQ_M
>  https://youtu.be/nYqxyfKOXBw
> #
>  https://youtu.be/oEgpGv2CF1U
> #
>  https://youtu.be/mAJeK283j0I
> #
>  https://youtu.be/-igAiudpBng
> #
>
> The reason for this effort is twofold:
> o My monitor is too small to handle the videos & the IDE
> o The videos show you what buttons to hit (the text tutorials don't)
>
> If someone here has _experience_ in _learning_ Android, that would help,
> where I've pretty much given up on the _text_ tutorials because I find I
> spend ten seconds reading what to do, and then ten minutes searching for
> the buttons they told us to hit.
>
> The video tutorials at least show every button; but you have to be able to
> start and stop them constantly, which is why it's handy to have them on the
> iPad.
>
> As you may be aware, everything sucks on iOS compared to Android, so if you
> have an Android tablet, you can easily just download _any_ video you want
> using NewPipe freeware on Android, which works _perfectly_.
>  <https://f-droid.org/en/packages/org.schabi.newpipe/>
>
> If you're on iOS, like I am, then everything sucks compared to Android,
> when it comes to flexibility, power, functionality, and usefulness. Sigh.
>

Hi Arlen,

I'm replying without quoting for space reasons, so hope this makes sense.

I am using 2 Windows laptops, side by side. The X201 (W10) has the 
development system running, the X220T (W7) is there to run text and/or 
videos. The latter is a tablet-convertible laptop, so can be folded to 
just take the space of the screen. Both have 12" screens, and this seems 
to work OK.

I do have a 7" Android tablet and a 10" Windows 8 tablet, but they are 
too small, so I think I'll stick with the Lenovo X-series.

I totally agree about the text guide and wasting time searching for 
buttons. I had already been looking up and at some videos - specifically 
the Bill Butterfield ones, but decided to plough on until I get the 
first text based one working. Your list of videos will be a great help, 
and I can download them. I am an Apple-free zone.

Now to the problem! I have now got the button and text box sitting 
there. It worked on the second try. So it's on to Java, where I start 
with a blank mind.


This is what I start with, which works:
--------------------------------------------------
package com.example.my1stapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

import static android.icu.lang.UCharacter.GraphemeClusterBreak.V;

public class MainActivity extends AppCompatActivity {

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
     }
}
-------------------------------------------------

and this is what I am told to do:


-------------------------------------------------

In the file app > java > com.example.myfirstapp > MainActivity, add the 
sendMessage() method stub as shown below:


class MainActivity : AppCompatActivity() {
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_main)
     }

     /** Called when the user taps the Send button */
     fun sendMessage(view: View) {
         // Do something in response to button
     }
}

-----------------------------------------------

If I just append the second bunch of code to the bottom of the first 
block, the whole of the second block is just underlined in red squiggle, 
which I assume implies an error.

I tried commenting out the curly bracket at the end of the first code 
block and adding one at the bottom of the second. This reduced the red 
squiggle count, but hovering over almost every word shows an error.

I've dug out an old Java book and done a search for Java basics on the 
'net, but without success so far. The Usenet Java group I've looked at 
seemed to die in 2012.
It seems to me that I need to have a basic grasp of Java whatever 
tutorial I follow, and this seems like a very basic stumbling block.






-- 
Bill

---
This email has been checked for viruses by AVG.
https://www.avg.com

[toc] | [prev] | [next] | [standalone]


#57061

FromBill <Billaboard@gmail.com>
Date2018-11-02 20:07 +0000
Message-ID<NDcjXneU6K3bFwPk@end.of.the.universe>
In reply to#57060
OOops, sorry, forgot to delete the quote. :-(
-- 
Bill

---
This email has been checked for viruses by AVG.
https://www.avg.com

[toc] | [prev] | [next] | [standalone]


#57069

From Arlen_Holder <a%rle%20nh.older@no.spam.net>
Date2018-11-02 23:16 +0000
Message-ID<prilt6$mei$1@news.mixmin.net>
In reply to#57060
On Fri, 2 Nov 2018 19:51:07 +0000, Bill wrote:

> I'm replying without quoting for space reasons, so hope this makes sense.

Hi Bill,
I've been on Usenet for decades where I never understood why people quote
so much since it's _all_ already there in the post that they're responding
to.

With me, you can quote _just_ the 1 or 1/2 sentence you're responding to! 
:)

> I am using 2 Windows laptops, side by side.
Good for you! That makes it easier for you than for me to 
o Follow instructions (which take up an entire screen), and, 
o At the same time, perform actions (which also take up an entire screen).

o The X201 (W10) has the 
> development system running, the X220T (W7) is there to run text and/or 
> videos. The latter is a tablet-convertible laptop, so can be folded to 
> just take the space of the screen. Both have 12" screens, and this seems 
> to work OK.

Since the second machine is Windows, you won't have the horror of what I
have to go through to get videos onto the iPad. Lucky you. The three videos
I plan on doing are these three, where I ditched a bunch of other videos in
favor of this guy, where the only (slight) problem is that his Android
Studio is slightly older than ours (so some buttons moved a bit).
o https://youtu.be/dFlPARW5IX8 (I've done this - and I think it's great)
o https://youtu.be/6ow3L39Wxmg (This is the one I plan on doing next)
o https://youtu.be/rdGpT1pIJlw (Then I plan on doing this one after that)
o https://youtu.be/bu5Y3uZ6LLM (Don't bother with this as it's too deep)

> I do have a 7" Android tablet and a 10" Windows 8 tablet, but they are 
> too small, so I think I'll stick with the Lenovo X-series.

Good for you. My iPad is the $300 Costco 9.7-inch WiFi-only iPad from 2017.
It's pretty small for my tired old eyes - but - it's better than nothing.

> I totally agree about the text guide and wasting time searching for 
> buttons. 

Yup. 
I've learned what you learned, but only after running through the original
text tutorial that it sucks becasue I can't find the buttons it says to hit
  <https://developer.android.com/training/basics/firstapp/>

*In hindsight, I recommend noobs _start_ with the _video_ tutorials first!*

I'm sure _after_ I'm familiar with all the billions of buttons in Android
Studio, that the tutorial above will work great - but it sucks - IMHO - for
a noob simply because they don't show a graphic with an arrow to the
buttons they say to hit. 

> I had already been looking up and at some videos - specifically 
> the Bill Butterfield ones, but decided to plough on until I get the 
> first text based one working. 

I gave up on the text-based tutorial (for now); I'll go back to it later.
For now, I'm doing the Bill Butterfield 3 of 4 videos.
I've only done the first one so far (as I spent today on trying to install
the Microsoft Android Emulator since I'm on an AMD CPU - which you don't
have to deal with):
o <https://visualstudio.microsoft.com/vs/msft-android-emulator/>

I have the Microsoft Android emulator working inside Android Studio:
o <http://www.bild.me/bild.php?file=8562677amd_emulation_05.jpg>
But I don't yet have Android Studio _using_ it for emulation! :(

> Your list of videos will be a great help, 
> and I can download them. 

The good news is that the videos, while a pain in a different way, at least
show EVERY click on the screen!

> I am an Apple-free zone.

Lucky you!

I have Apple equipment because I help people use Apple products.
Except in marketing, compared to Windows/Linux/Android, iOS stinks.

A lot of people _think_ they have solutions that work cross platform, but
until they get their shit working on iOS, they don't know what cross
platofrm means! 

That means, eventually, all my apps will also work on iOS; but that will
happen way later (if ever).
o  What are the most fundamental basic apps that are (apparently) lacking on Android? 
o <https://groups.google.com/forum/#!topic/comp.mobile.android/SZk_fXWqg88>

> Now to the problem! I have now got the button and text box sitting 
> there. It worked on the second try. So it's on to Java, where I start 
> with a blank mind.

I don't know the "java" syntax yet - but it's extremely "syntactical"!
That's for sure! :)

I see you have a followup message, so I'll look at that.

We really should both be working the same tutorial if we want to help each
other ... so ... I guess what I should do, to help you, is go _back_ to the
original text tutorial - which I had abandoned in favor of the video
tutorials.
  <https://developer.android.com/training/basics/firstapp/>

To be sure, is _that_ the tutorial you're working on currently?

[toc] | [prev] | [next] | [standalone]


Page 5 of 7 — ← Prev page 1 2 3 4 [5] 6 7  Next page →

Back to top | Article view | comp.mobile.android


csiph-web