LightBlog

lundi 3 octobre 2016

USB publishes new Audio Class 3.0 spec for phones without a 3.5mm jack

USB Type C audio jack

The 3.5mm jack has already begun disappearing from many a new smartphone, and USB-IF, the group behind the connector standard, has now published its USB Audio Device Class 3.0 (ADC 3.0) specification, which offers up a more definitive set of guidelines for those looking to send audio over USB Type-C.

According to the group, this new specification is primarily about allowing manufacturers to remove the old 3.5mm jack socket, while also enabling slimmer devices, improved water resistance, and new digital audio features. The new 3.0 audio specification is also designed to improve power efficiency and key word detection for better voice recognition.

usb-c-audio

Importantly, the USB Audio Device Class 3.0 continues to support both analog and digital audio. The two secondary bus (SBU) pins are still allowed to be used for non-digital audio transfer, so device manufacturers can continue to provide Type-C to 3.5mm adaptors to support existing headphones. In fact, all spec compliant hosts will have to support these "headset adaptor devices" going forward, so current headphones will continue to work with USB only smartphones.

The specification also reveals a little about what we can expect from upcoming USB headphones and audio accessories. Apparently, these devices will feature multi-function processing units (MPUs), which will define the features available from the audio hardware. Usage examples include host syncronization, digital-to-analog conversion, noise cancellation, equalization, and built-in microphone controls. As an extension to these new MPUs, the new USB audio specification also outlines new Power Domain and power saving features. This allows devices to be put into various sleep modes to lower power consumption, and features new BADD profiles for more efficienct discovery and management of connected devices.

As far as digital audio quality goes, USB ADC 3.0 compatible devices will support the latest USB Audio Type-III and Type -IV compression formats. They will also retain backwards compatibility with the ADC 1.0 and 2.0 specifications, which are currently used by a number of third party DACs.

USB Type-C cableSee also: USB-IF announces certification program for USB Type-C chargers4

The importance of a certified USB Type-C audio specification cannot be overstated. Both customers and accessory manufacturers can now be confident that upcoming headphones and other audio products will be compatible with all devices that conform to the same USB specification. However, this certainly doesn't mean that consumers are going to rush to ditch the 3.5mm jack, if the launch reception for the new iPhone 7 and Moto Z range are anything to go by. Despite the unveiling of this unifying specification, we may see a growing split between manufacturers ditching and those sticking with the trusty 3.5mm socket.



from Android Authority http://ift.tt/2cNdbP8
via IFTTT

Introducing Charged.io: Official launch and DJI Mavic Pro giveaway!

When I started at Android Authority almost five years ago, Google's mobile operating system was already successful. Sure, it was far from the mature and complex ecosystem we know and love today, but in 2012, it was very clear that Android is the future. I was very lucky to be part of it, and in 2016 I consider myself incredibly lucky to be able to follow the next revolution on Charged.io.

Introducing Charged.io

charged logo

Electric vehicles, autonomous driving systems, drones, space explorations and green power. These are just a few of the topics that we'll cover on Charged, the newest site in the Android Authority family.

Joining TabTimes, SoundGuys, VRSource, and of course Android Authority, Charged is an online publication dedicated to documenting the rise of modern transportation and green power technologies, and their impact on our lives and society.

We aim to establish Charged as your reference source for the intersection of technology and transportation. You can expect timely news on the latest developments related to EVs, self-driving cars, Hyperloop, drones, and even space exploration; in-depth comparisons of the most desirable vehicles and drones on the market; guides that will help you pick your next purchase; and accurate and balanced reviews and drive tests.

At Charged, we believe that the future of humanity is green, smart, and connected, and we're dedicated to promoting and spreading awareness of the people, organizations and companies that bring us closer to this future.

Get to know us

Charged.io has been online since July 2016, but today we're launching it officially. You're invited to join our community of transportation technology enthusiasts! We're only scratching the surface in terms of coverage, so drop us a line if you want to have a say in how the site develops and grows.

Visit Charged.io and follow us on social media to keep up with our coverage.

DJI Mavic Pro giveaway

dji mavic pro (1)

The Mavic Pro is smart, fast, and agile. We aim to be just like that in our coverage, so we decided that this brand new drone from DJI is the ideal prize for our introductory giveaway.

Enter the giveaway on Charged.io

Here's to Charged – The Future Is Here!



from Android Authority http://ift.tt/2dxQVNQ
via IFTTT

How to build an image gallery app – full tutorial with code

P1000207

There are many reasons you might find yourself needing to create an image gallery – whether it's to show off album covers for a music app, to present feature images for articles in a feed, or to showcase your work in a portfolio. To make the right impression though, these apps should allow users to effortlessly swipe through multiple images without slowdown and that's where things get a little tricky.

This tutorial will show you how to create a seamless gallery filled with nice big images and then adapt that for a number of different applications. Along the way, we'll see how to use RecyclerViews, adapters and Picasso – so hopefully it will make for a great learning exercise, whatever you end up doing with it! Full code and project included below…

recyclerview-featuredSee also: Using RecyclerView to build lists in Android

Introducing RecyclerView

To create our Android gallery, we're going to use something called a RecyclerView. This is a handy view that acts very much like a ListView but with the advantage of allowing us to scroll quickly through large data sets. It does this by only loading the images that are currently in view at any given time. This means we can load more images without the app becoming very slow. There's a lot more that you can do with this view and it's used all over Google's own apps, so check out the full explanation to using RecyclerView to find out more.

The good news is that this is all we really need to create our gallery – a RecyclerView filled with images. The bad news is that the RecyclerView is a little more complicated than most other views. Because of course it is.

RecyclerView is not, for starters, available to drag and drop using the design view. So we'll just have to add it to the activity_main.xml, like so:

  <android.support.v7.widget.RecyclerView              android:id="@+id/imagegallery"              android:layout_width="match_parent"              android:layout_height="match_parent"              />  

Notice that we're referencing the Android Support Library. This means we also need to modify our build.gradle in order to include the dependency. Just add this line to the app level file:

  compile 'com.android.support:recyclerview-v7:24.2.1'  

And if that's not installed, then you're going to have to open the SDK manager and install it. Fortunately, Android Studio is pretty smart about prompting you to do all this. I just got a new computer, so I can play along with you!

Support repository

Head back to the XML and it should now be working just fine. Except the list is not populated except with 'item 1, item 2, item 3'. What we need to do, is load our images into here.

working list

Creating your list of images

As mentioned, populating our recycler view is a little more complicated than using a regular list. By which, I mean it's way more complicated… but it's a great chance for us to learn some handy new skills. So there's that.

For a RecyclerView, we're also going to need a layout manager and an adapter. This is what's going to allow us to organize the information in our view and add the images. We'll start by initializing our views and attaching an adapter in the onCreate of MainActivity.java. This looks like so:

  setContentView(R.layout.activity_main);    RecyclerView recyclerView = (RecyclerView)findViewById(R.id.imagegallery);  recyclerView.setHasFixedSize(true);    RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getApplicationContext(),2);  recyclerView.setLayoutManager(layoutManager);  ArrayList<CreateList> createLists = prepareData();  MyAdapter adapter = new MyAdapter(getApplicationContext(), createLists);  recyclerView.setAdapter(adapter);  

We're setting the layout as activity_main, then we're finding the RecyclerView and initializing it. Notice that we use HasFixedSize to make sure that it won't stretch to accommodate the content. We're also creating the layout manager and the adapter here. There are multiple types of layout manager but true to gallery-form, we're going to pick a grid rather than a long list. Remember to import the GridLayoutManager and the RecyclerView as Android Studio prompts you to do so. Meanwhile, when you highlight MyAdapter, you'll be given the option to 'Create Class MyAdapter'. Go for it – make your own MyAdapter.Java and then switch back. We'll come back to this later.

Before we can use the new adapter class, we first need to create our data set. This is going to take the form of an array list. So in other words, we're going to place a list of all our images in here, which the adapter will then read and use to fill out the RecyclerView.

Just to make life a little more complicated, creating the Array List is also going to require a new class. First though, create a string array and an integer array in the same MainActivity.Java:

  private final String image_titles[] = {          "Img1",          "Img2",          "Img3",          "Img4",          "Img5",          "Img6",          "Img7",          "Img8",          "Img9",          "Img10",          "Img11",          "Img12",          "Img13",  };    private final Integer image_ids[] = {          R.drawable.img1,          R.drawable.img2,          R.drawable.img3,          R.drawable.img4,          R.drawable.img5,          R.drawable.img6,          R.drawable.img7,          R.drawable.img8,          R.drawable.img9,          R.drawable.img10,          R.drawable.img11,          R.drawable.img12,          R.drawable.img13,  };  

The strings can be anything you want – these will be the titles of your images. As for the integers, these are image IDs. This means they need to point to images in your Drawables folder. Drop some images into there that aren't too massive and make sure the names are all correct.

Remember: a list is a collection of variables (like strings or integers), whereas an array is more like a filing cabinet of variables. By creating an ArrayList then, we're basically creating a list of filing cabinets, allowing us to store two collections of data in one place. In this case, the data is a selection of image titles and image IDs.

Now create a new Java Class called CreateList and add this code:

  public class CreateList {        private String image_title;      private Integer image_id;        public String getImage_title() {          return image_title;      }        public void setImage_title(String android_version_name) {          this.image_title = android_version_name;      }        public Integer getImage_ID() {          return image_id;      }        public void setImage_ID(Integer android_image_url) {          this.image_id = android_image_url;      }  }  

What we have here is a method we can use to add new elements (setImage_title, setImage_ID) and retrieve them (getImage_title, getImage_ID). This will let us run through the two arrays we made and stick them into the ArrayList. You'll need to import array lists.

We do this, like so:

      private ArrayList<CreateList> prepareData(){            ArrayList<CreateList> theimage = new ArrayList<>();          for(int i = 0; i< image_titles.length; i++){              CreateList createList = new CreateList();              createList.setImage_title(image_titles[i]);              createList.setImage_ID(image_ids[i]);              theimage.add(createList);          }          return theimage;      }  }  

So we're performing a loop while we go through all the image titles and adding them to the correct array in the ArrayList one at a time. Each time, we're using the same index (i), in order to add the image ID to its respective location.

P1000208

Confused yet?

Using the adapter

Before you head over to MyAdapter.java, you first need to create a new XML layout in the layout directory. I've called mine cell_layout.xml and it looks like so:

  <LinearLayout xmlns:android="http://ift.tt/nIICcg"      android:orientation="vertical"      android:background="#FFFFFF"      android:layout_width="match_parent"      android:layout_height="wrap_content">      <ImageView          android:id="@+id/img"          android:adjustViewBounds="true"          android:layout_width="match_parent" />      <TextView          android:id="@+id/title"          android:layout_gravity="center"          android:textColor="#000"          android:textStyle="bold"          android:layout_width="wrap_content"          android:layout_height="wrap_content" />  </LinearLayout>  

All this is, is the layout for the individual cells in our grid layout. Each one will have an image at the top, with text just underneath. Nice.

Now you can go back to your MyAdapter.java. This is where we're going to take the list, take the cell layout and then use both those things to fill the RecyclerView. We already attached this to the RecyclerView in MainActivity.Java, so now all that's left is… lots and lots of complex code.

It's probably easiest if I just show you…

  public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {      private ArrayList<CreateList> galleryList;      private Context context;        public MyAdapter(Context context, ArrayList<CreateList> galleryList) {          this.galleryList = galleryList;          this.context = context;      }        @Override      public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {          View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.cell_layout, viewGroup, false);          return new ViewHolder(view);      }        @Override      public void onBindViewHolder(MyAdapter.ViewHolder viewHolder, int i) {          viewHolder.title.setText(galleryList.get(i).getImage_title());          viewHolder.img.setScaleType(ImageView.ScaleType.CENTER_CROP);          viewHolder.img.setImageResource((galleryList.get(i).getImage_ID()));              }        @Override      public int getItemCount() {          return galleryList.size();      }        public class ViewHolder extends RecyclerView.ViewHolder{          private TextView title;          private ImageView img;          public ViewHolder(View view) {              super(view);                title = (TextView)view.findViewById(R.id.title);              img = (ImageView) view.findViewById(R.id.img);          }      }  }  

So what we're doing here is to get our ArrayList and then create a ViewHolder. A ViewHolder makes it easier for us to iterate lots of views without having to write findViewByID every time – which would be impractical for a very long list.

We create the VewHolder by referencing the cell_layout file we created earlier, and then bind it with the data from our ArrayList. We find the TextView first and set that to be the relevant string, then we find the ImageView and use the image ID integer to set the image resource. Notice that I've also setScaleType to CENTER_CROP. This means that the image will be centered but cropped to fill the enter cell in a relatively attractive manner. There are other scale types but I believe that this is by far the most attractive for our purposes.

Don't forget to import the ImageView and TextView classes. And remember you need to add some images to your drawables folder. Once you've done that though you should be ready to go!

Give it a try and you should end up with something that looks a little like this:

Screenshot_20160929-124324

Except without all the pictures of me… This is just what I happened to have to hand, don't judge!

Not working as expected? Don't worry – this is a pretty complicated app for beginners. You can find the full thing over at GitHub here and then just work through each step while referring to the code.

displaying-data-in-cardviews-and-gridviews-16x9-720pSee also: Displaying large amounts of data with GridView and CardView2

Making this into a useful app

So right now we have a strange slideshow of photos of me. Not really a great app…

So what might you use this code for? Well, there are plenty of apps that essentially boil down to galleries – this would be a great way to create a portfolio for your business for example, or perhaps a visual guide of some sort.

In that case, we might want to add an onClick so that we can show some information, or perhaps a larger version of the image when someone taps their chosen item. To do this, we just need to import the onClickListener and then add this code to onBindViewHolder:

  viewHolder.img.setOnClickListener(new OnClickListener() {      @Override      public void onClick(View v) {          Toast.makeText(context,"Image",Toast.LENGTH_SHORT).show();      }  });  

If we wanted to load a selection of photos on the user's device meanwhile, we'd simply have to list files in a particular directory. To do that, we'd just need to use listFiles to take the file names and load them into our ListArray list, using something list this:

  String path = Environment.getRootDirectory().toString();  File f = new File(path);  File file[] = f.listFiles();  for (int i=0; i < file.length; i++)  {      CreateList createList = new CreateList();      createList.setImage_Location(file[i].getName());  }  

Except you'll be changing your path string to something useful, like the user's camera roll (rather than the root directory). Then you can load the bitmaps from the images on an SD card or internal storage by using the image name and path, like so:

  Bitmap bmp = BitmapFactory.decodeFile(pathName);  ImageView img;  img.setImageBitmap(bmp);  

You'll probably want to get thumbnails from them too. This way, the list will be populated dynamically – so that when new photos are added to that directory, you're gallery will update to show them each time you open it. This is how you might make a gallery app for displaying the images on a user's phone, for example.

Or alternatively, another way we could make this app a little fancier, would be to download images from the web.

This might sound like a whole extra chapter but it's actually pretty simple as well. You just need to use the Picasso library, which is very easy and completely free. First, add the dependency like we did earlier:

  compile 'com.squareup.picasso:picasso:2.5.0'  

Then, change your ArrayList to contain two string arrays instead of a string and an integer. Instead of image IDs, you're going to fill this second string array with URLs for your images (in inverted commas). Now you just swap out the line in your onBindViewHolder to:

  Picasso.with(context).load(galleryList.get(i).getImage_ID()).resize(240, 120).into(viewHolder.img);  

Remember to add the relevant permission and it really is that easy – you can now download your images right from a list of URLs and that way update them on the fly without having to update the app! Picasso will also cache images to keep things nice and zippy for you.

Note as well that if you wanted to have more than two images per row, you would simply swap:

  RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getApplicationContext(),2);  

For:

  RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getApplicationContext(),3);  

This will give you something like the following:

Screenshot_20160929-125455

If you don't like the text and you just want images, then you can easily remove the string array from proceedings. Or for a quick hack if you don't want to stray too far from my code, you can just make the TextView super thin.

Screenshot_20160929-130924-16x9-720p

Closing comments

And there you have it – your very own basic image gallery. There are plenty of uses for this and hopefully you've learned a few useful bits and pieces along the way. Stay tuned for more tutorials just like this one!

And remember, the full project can be found here for your reference.

P1000209



from Android Authority http://ift.tt/2doICCf
via IFTTT

EU expected to fine Google over anti-competitive Android practices

Google Apps

The European Union's anti-trust regulators have been investigating Google and its Android operating system in regard to anti-competitive practises for almost two years now, and decided to file formal charges back in April. A 150 page document, which contains a charge sheet, sent to the complainants last week reveals that the Commission is preparing to slap Google with a hefty fine.

The European Commission launched its investigation into Google after it received a complaint from FairSearch that Google offers financial incentives and punishing term of usage to smartphone manufacturers who pre-install Google Search and other apps exclusively on their handsets. The EU competition enforcer plans to compel Google to halt payments or discounts to mobile phone manufacturers in return for pre-installing the Play Store.

The document also reveals that regulators want to prevent Google from cajoling manufacturers into installing proprietary apps, such as Maps, Docs, and Search, if Google plans to continue to restrict their ability to install a competing Android-based operating system. Currently, many forked versions of Android, such as Tizen or CyanogenMod, do not come bundled with Google apps because of licensing restrictions. Google was recently fined $6.75 million for similar charges brought in Russia.

The Commission intends to set the fine at a level which will be sufficient to ensure deterrence

As for financial penalties, the document doesn't set a specific amount, but the company can expect a large fine because these practices have been ongoing since January 2011 and are still running today, according to the document.

The financial penalty could be based on the amount of ad revenue that Google has generated through AdWord clicks from European customers, or perhaps from Play Store app purchases and AdMob's in-app advertisements.

The European Commission has declined to comment on the document, but Google appears determined to fight the charges. Google intends to argue that its Android business model is designed in a way that benefits both consumers and innovation.

"We look forward to showing the European Commission that we've designed the Android model in a way that's good for both competition and consumers, and supports innovation across the region." – Google

In addition to the case against Android, the European Commission has also charged Google with favoring its own shopping services over those of its rivals. This case is also expected to hit Google with a fine, and the company may be forced into ranking rival shopping services using the same methods as it does for its own, along with potentially allowing Google to charge competitors to display their services more prominently. This cost would likely be kept artificially low, by pegging it to Google's operating costs or the lowest reserve price for AdWords, which currently sits at 0.01 euro per click.

The European Commission has stepped up its rhetoric against Google this year, but has appeared rather inconsistent in its message. For instance, Margrethe Vestager, the European Commissioner for Competition, earlier in the year admitted that Google has played a significant role in smartphone innovation and didn't "want to take away the rewards Google has got from that". However, she is now fining the company for cultivating a user experience than enables app developers to put their products in front of billions of smartphone customers.

EU Commissioner for Competition Margrethe VestagerSee also: EU anti-trust commissioner repeats old mantra that Google is stifling innovation47

The case also seems to ignore that companies like Amazon and Samsung have taken Android and used it for their own growing product portfolios, without offering consumers a way to opt back in to Google's services if they prefer them. There's also no parallel investigation into Apple's tight grip over the iOS app store and services either.

This latest anti-trust case is not over yet, but rightly or wrongly, it's looking increasingly likely that Google will be stuck with a notable fine and some regulatory control over its Android operating system.



from Android Authority http://ift.tt/2dDpR1a
via IFTTT

Sony Xperia XZ goes on sale in the US for $700, sans fingerprint scanner

sony xperia xz ifa 2016 aa-11

Although Sony Mobile may not be a stellar name in the United States, the company continues to tempt the market with new products every so often. Sony Xperia XZ, the latest flagship from the Japanese company, just went on sale in the U.S. for $699.99.

Sony announced a little more than a week ago that Xperia XZ was up for pre-orders, without relying on U.S. carriers to distribute the phone. Instead, the company partnered with online retail giant Amazon to market the handsets.

It is notable, however, that Amazon removed the Forest Blue variant from its offerings, despite including the model in its list during the pre-order phase. It is not quite clear why Sony or Amazon would narrow down the color options for consumers in the U.S., leaving only the Graphite Black and Platinum variants in stock.

As a reminder, Sony Xperia XZ sports a Gorilla Glass 4 5.2-inch full HD display and packs a Snapdragon 820 processor, 3GB of RAM and 32GB of internal storage under the hood. It boasts a 23MP rear camera and a and IP65/68 water resistance feature.

  • Sony Xperia XZ Hands On at I...
  • Sony Xperia X Compact Hands ...

The handset also features a USB Type-C port, though the fingerprint sensor that's present in international models is missing in the U.S. version. As Brian Reigh notes in another post, it is quite odd that Sony would decide to leave out the fingerprint scanner at a time when almost all other phone makers are slapping it onto their products.

The absence of a fingerprint scanner, plus the hefty price tag of Sony Xperia XZ, might not help uplift Sony Mobile's lackluster business in the U.S. After all, U.S. consumers already have cheaper options of devices with the same or even superior features.

Would you be buying Sony Xperia XZ now that it is up for sale through Amazon? Let us know your thoughts in the comments.

Get it from Amazon


from Android Authority http://ift.tt/2dBaG3i
via IFTTT

Full Google Pixel and Pixel XL specifications leaked by retailer

google pixel

Google just found out, the hard way, how difficult it can be to coordinate a major smartphone launch. Details about its first self-branded smartphones, the Pixel and Pixel XL, have been published by several retailers ahead of their official unveiling tomorrow.

The most revealing leak comes from Carphone Warehouse. The British retailer put up, and quickly removed, product listings for the Pixel and Pixel XL. The listings confirm much of what we were anticipating thanks to older leaks, and add a handful of new details. A mirror of the Pixel XL is available here, thanks to Reddit user krackers.

Without further ado, here are the Google Pixel and Google Pixel XL specifications.

Google Pixel specs

  • Dimensions: 143.8 x 69.5 x 8.6 mm, 143 grams
  • Display: 5-inch Full HD AMOLED, 441 ppi, Gorilla Glass 4
  • Processor: 2.15GHz Snapdragon 821 (quad-core, 64-bit)
  • RAM: 4GB
  • Storage: 32GB or 128GB
  • Camera: Rear – 12.3MP, f/2.0, 1.55um, OIS. Front – 8MP
  • Battery: 2,770 mAh, fast charging
  • Other features: fingerprint scanner, USB Type-C, NFC, 3.5 mm headphone jack
  • OS: Android 7.1

Google Pixel XL specs

  • Dimensions: 154.7 x 75.7 x 8.6 mm, 168 grams
  • Display: 5.5-inch Quad HD AMOLED, 534 ppi, Gorilla Glass 4
  • Processor: 2.15GHz Snapdragon 821 (quad-core, 64-bit)
  • RAM: 4GB
  • Storage: 32GB or 128GB
  • Camera: Rear – 12.3MP, f/2.0, 1.55um, OIS. Front – 8MP
  • Battery: 3,450 mAh, fast charging
  • Other features: fingerprint scanner, USB Type-C, NFC, 3.5 mm headphone jack
  • OS: Android 7.1

According to Carphone Warehouse, the Pixel and Pixel XL will feature microSD card slots, but it's likely that this is an error. In general, all of these specs are still subject to change until Google reveals the official spec sheets tomorrow.

The listing also reveals a few of the main selling points that Google will use to market the Pixel and Pixel XL. Unsurprisingly, Allo and Duo, Google's fresh new messaging services, are front and center, as is Assistant, which will be accessible on the Pixels through the "OK Google" voice command or by holding the home button.

Google will also offer free unlimited photo storage at full resolution – that's a step above the "high quality" option that is currently offered for free to all Google Photos users.

Google also highlighted the USB Type-C chargers and the ability to charge up to 7 hours of battery life in 15 minutes, as well as the compatible Live Cases, which the company introduced for previous Nexus devices.

We also get a few more product shots of the two phones, including the white version which also leaked on Bell.

What do you think of the Pixel and Pixel XL specifications?



from Android Authority http://ift.tt/2doYQe6
via IFTTT

dimanche 2 octobre 2016

White Google Pixel and Pixel XL leaked by Bell

googlepixelleakbell

The Google Pixel and Pixel XL are to be announced in just a couple days, but the rumor mill continues going strong. Today's leaks come from a rather reliable source, though – Bell.

The Canadian carrier made a couple pages live today, showing off both upcoming Google smartphones by accident. One of the pages was originally meant for the Samsung Galaxy Note 7, but instead it displayed Google's handset.

googlepixelxlbellleaklarge

This not only serves as corroboration of the phone's existence and its name, but we also got to take our first good look at the white and silver version of the gadget. We have seen these white versions before, but in blurry photos like the ones this industry is so used to.

There's not much else to see or learn here, but October 4th is just around the corner and all the details should be made available then. Of course, we will be here to tell you all about the new Pixel smartphones, as well as anything else Google may announce said date.

Rumors say we will also get to see more on Google Home, a router and the Chromecast Ultra. There's plenty to look forward to, right?



from Android Authority http://ift.tt/2cWeA9u
via IFTTT