Android Widget: Android – LeaVe my baThRoom at-least !

What is a widget?  In Android, the word widget is a generic term for a bit of self-contained code that displays a program, or a piece of a program, that is also (usually) a shortcut to a larger application. We see them every day on web pages, on our computer desktop and on our smartphones, but we never give too much thought into how great they are. Widgets first appeared in Android in version 1.5, and really gained traction thanks to HTC’s Sense-flavored version of the operating system. Prior to the release of the HTC Hero and our first taste of HTC Sense, widgets were functional, but pretty bland in appearance. Since then, the people making our phones and independent developers alike have done some marvelous things with widgets, and it’s hard to imagine using Android without them.
Android support to implement widgets for both, the home screen and the lock screen.

Common Types of Android Widget
Widget typically fall in one of the following categories

1. Information Widgets

Information widgets display information elements that are important to a user and track how that that information changes over time. Touching information widgets typically launches the associated app and opens a detail view of the widget information. Example for information widgets are weather widgets, clock widgets, etc.

2.Collection widgets

As the name implies, collection widgets specialize on displaying multitude elements of the same type, such as a collection of pictures from a gallery app, a collection of articles from a news app or a collection of emails/messages from a communication app. Collection widgets typically focus on two use cases: browsing the collection, and opening an element of the collection to its detail view for consumption. Collection widgets can scroll vertically.

3.Control widgets

The main purpose of a control widget is to display often used functions that the user can trigger right from the home screen without having to open the app first. A typical example of control widgets are music app widgets that allow the user to play, pause or skip music tracks from outside the actual music app. Power Control Widgets are using to make changes to the system settings easier and simpler. You just need to toggle On or Off almost all the system settings with just one tap.

4. Hybrid Widget
They combine the elements of different other widgets in one.

Some Widget Limitations
Gestures
Only two gestures available for widgets are Touch and Vertical Swipe
Elements
Due to gestures limitations, some of the UI elements that rely on restricted gestures are not available for widgets.

To create your own widget and use your widget in layout XML, there are two additional files for you need to create. Here is a list of files you’ll need to create to implement a custom widget:

XML Definition File – Click on your project and create a new folder called xml. Now right click on the newly created folder and create a new XML file. An XML flie defines the XML element used to instantiate your widget, and the attributes that it supports. The resource type of the XML file should be set to AppWidgetProvider. In the xml file, define some properties which are as follows :-

<appwidget-provider 
xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="146dp"
android:updatePeriodMillis="0"
android:minHeight="146dp"
android:initialLayout="@layout/activity_main">
</appwidget-provider>

Layout XML [optional]– An optional XML file inside res/layout/ that describes the layout of your widget. You could also do this in code in your Java file.

Java Implementation File– This is the file that implements the behavior of the widget. If you can instantiate the object from layout XML, you will also have to code a constructor that retrieves all the attribute values from the layout XML file.

Java File must extend AppWidgetProvider class and override its update method. In the update method, you have to deifne the object of two classes PendingIntent and RemoteViews.

PendingIntent pending = PendingIntent.getActivity(context, 0, intent, 0);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.activity_main);

In the end you have to call an update method updateAppWidget() of the AppWidgetManager class.

appWidgetManager.updateAppWidget(currentWidgetId,views);

Following are the other Methods of AppWidgetProvider class to manipulate widgets.
onDeleted(Context context, int[] appWidgetIds)
This is called when an instance of AppWidgetProvider is deleted.

onDisabled(Context context)
This is called when the last instance of AppWidgetProvider is deleted

onEnabled(Context context)
This is called when an instance of AppWidgetProvider is created.

onReceive(Context context, Intent intent)
It is used to dispatch calls to the various methods of the class

You also need to declare approvider widget class in Android manifest file as follows

appWidgetManager.updateAppWidget(currentWidgetId,views);  

<receiver android:name="ExampleAppWidgetProvider" >

<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>

<meta-data android:name="android.appwidget.provider"
android:resource="@xml/example_appwidget_info" />
</receiver>

Example

here is the example of application widget which create basic widget which will open the Web Browser.
Content of the MainActivity.java

package net.suven.android.androidwidget;

import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.widget.RemoteViews;
import android.widget.Toast;

public class MainActivity extends AppWidgetProvider{
public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) {
for(int i=0; i < appWidgetIds.length; i++){
int currentWidgetId = appWidgetIds[i];
String url = "http://android.suvenconsultants.com/";

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setData(Uri.parse(url));

PendingIntent pending = PendingIntent.getActivity(context, 0,intent, 0);
RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.activity_main);

views.setOnClickPendingIntent(R.id.button, pending);
appWidgetManager.updateAppWidget(currentWidgetId,views);
Toast.makeText(context, "widget added", Toast.LENGTH_SHORT).show();
}
}
}

Content of the activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:transitionGroup="true">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SCTPL"
android:id="@+id/textView"
android:layout_centerHorizontal="true"
android:textColor="#ff3412ff"
android:textSize="35dp" />

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Visit SCTPL"
android:id="@+id/button"
android:layout_centerHorizontal="true"
android:layout_marginTop="61dp"
android:layout_below="@+id/textView" />

</RelativeLayout>

Content of the AndroidManifest.xml

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

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<receiver android:name=".MainActivity">

<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"></action>
</intent-filter>

<meta-data android:name="android.appwidget.provider"
android:resource="@xml/widget"></meta-data>

</receiver>

</application>
</manifest>

content of the res/xml/widget.xml

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="146dp"
android:updatePeriodMillis="0"
android:minHeight="146dp"
android:initialLayout="@layout/activity_main">
</appwidget-provider>
Install App and Go to your widget section and add your created widget to the desktop or home screen.

Android widget application output
Click here to download Source Code and APK
 Learn Android Programming?

Samsung Galaxy A8 and A8 Plus announced: Sleek, selfie-focused mid-rangers

Samsung just announced its new mid-range phones, the Galaxy A8 (2018) and Galaxy A8 Plus (2018).

Replacing the 2017 Galaxy A lineup, the Galaxy A8 and Galaxy A8 Plus feature attractive specs and a design that is inspired by the Galaxy S series. The coolest feature is the dual front cameras, which feature f 1.9 lenses and portrait mode.

A simpler naming scheme

In recent years, Samsung has released several popular phones in the mid range as part of the A series. The naming convention for these devices – Galaxy A3, Galaxy A5 and Galaxy A7 – conflicted with the way Samsung names its most important devices, the Galaxy S and Galaxy Note series.

With the 2018 generation, Samsung has renamed the Galaxy A5 to Galaxy A8 (2018) and the Galaxy A7 to Galaxy A8 Plus (2018).

We don’t know for now what happened to the Galaxy A3. Did Samsung kill it? Will it be folded in the Galaxy J series?

Front-facing dual cameras

The Galaxy A8 and A8 Plus are the first Samsung phones with dual front cameras. These mid-rangers beat out the flagships to the punch, though dual front cameras have been a fixture on mid-range phones from other manufacturers.

The cameras feature f 1.9 lenses – basically, the lower the number the better – so they should give your selfie nice background blurs.

One of the cameras is 16MP, and the other one 8MP. Samsung says you can switch between them to get the type of shot you like, which makes it sound like they have different widths of angle.

Portrait modes are all the rage, and the Galaxy A8 and Galaxy A8 Plus are jumping on the bandwagon. You can take selfies and adjust the amount of blur in the background, before and after taking the image – this feature is called Live Focus and we’ve seen it before on the rear dual camera of the Galaxy Note 8.

You also get stickers and a beauty mode to spice up your self-portraits.

Familiar design, competent specs

The new Galaxy A8 (2018) and Galaxy A8 Plus (2018) look a lot like Samsung’s 2017 devices, mixing a smooth glass back with a metallic chassis and the 18.5:9 display form factor.

They are available in black, orchid grey, gold and blue.

The Galaxy A8 features a 5.6-inch Full HD+ (“+” denoting it’s an 18.5:9 panel), while the A8 Plus goes up to 6 inches, but keeps the same resolution.

The two phones share most of the key specs, including the cameras (16 MP PDAF f 1.7 on the back), an octa-core processor, 4GB of RAM, and 32/64GB of storage.

The smaller A8 features a 3,000 mAh battery. The A8 Plus gets an excellent 3,500 mAh – that’s the same as the much pricier Galaxy S8 Plus.

Both phones feature fingerprint sensors (placed below the rear camera), USB Type-C, Samsung Pay (with MST, so you can use them on older points of sale), and IP68 water and dust resistance.

Comparing the Galaxy A8 to the current generation

Compared to the 2017 Galaxy A5 and Galaxy A7, the Galaxy A8 (2018) and Galaxy A8 Plus (2018) offer updated designs that follow the Galaxy S series (much smaller bezels, fingerprint sensor is now on the back), as well as improvements to the processor, RAM and memory.

The biggest new feature is the dual front camera. The screens are also larger, though the actual size of the phone is almost unchanged. That’s probably why the battery capacity remained roughly the same.

Samsung Galaxy A8 and A8 Plus price and availability

You will be able to buy the Galaxy A8 (2018) and Galaxy A8 Plus (2018) starting from January. That’s the only detail that Samsung has revealed so far, but we expect to learn more at CES Las Vegas, when we’ll also go our hands on these two phones.

If the price of previous phones in the A series is any indication, the new A8 and A8 Plus will cost in the $350-$450 range, depending on the market.

Thoughts on the new Galaxy A8 (2018) and Galaxy A8 Plus (2018)?

Masters and Servants

If you watch a film or TV series like Downton Abbey, you can learn about how the class structure of society worked a century ago. Many of those concepts of hereditary masters and servants are now completely outdated. But while class borders have become a lot more flexible today, classes still do exist. In today’s economy there are still masters, who are the customers paying for a service, and servants, who then get money for providing those services. Of course the guy who is a servant all day, for example an Uber driver, can come home and become the master by ordering a pizza delivered. But the rich are more likely to receive services, and the poor are more likely to provide those services; we aren’t really much more equal than back in the days of Downton Abbey.

This class divide has also reached games. If you can afford to buy $60 games or spend money in Free2Play games, you get services provided to you. If you play those Free2Play games for free, you end up being the content for other players. It is as if you were paid for providing a service as opponent for another player, only that you don’t get paid in cash but in access to the game.

I don’t like being a servant to a game company. Game companies, like most other companies, treat their customers like royalty, and their employees like garbage. So I don’t want to work for the game company, be the content, provide a service as a cheap replacement of an artificial intelligence. In particular I hate games where even if you pay money, you never can escape from that role as servant, because you always are content for other players.

I just can’t play the new Magic Arena, because it only has a PvP mode. Not only don’t I like serving as content for other players. I also don’t like the content that other players provide to me: Playing against random humans means total unpredictability, you can end up against a complete pushover or the guy who spent hundreds of dollars and hours on the game and is a complete pro. On the one side I feel bad if I play against a human and have to quit early because real life intervenes (which makes the game rather unsuitable for mobile platforms), but on the other side I hate it when my opponent quits early. I much prefer playing against an AI, where there is no social contract, and my opponent plays in a more predictable manner. Previous electronic versions of Magic the Gathering have proven that an AI can be created that plays the game reasonably well. So making a version of Magic without AI to me feels like simple exploitation of players as content, and I’m not willing to be exploited like that.

Albatross

There must be a rational way to manage buying and playing PC games. There must be an optimum of getting a maximum amount of fun out of a minimum amount of money spent, and getting the best out of each individual purchase. Unfortunately I must say that I am very far away from that optimum.

I have a large library of unplayed Steam games, which isn’t unusual. The rational thing to do would be whenever I have the time to install an unplayed game and play it to find out whether I want to spend more time with it or not. But somehow that second part causes me a problem. For example I recently installed Wolfenstein: The New Order, because I was in the mood to play a shooter game. I played the game for an hour or two, but didn’t really warm up to it. And now the game sits on my desktop and for psychological reasons I don’t really understand feels like an albatross around my neck. When I turn on my computer, seeing the icon of the game doesn’t make me want to play it. But somehow I feel that I *should* play it some more before uninstalling it and moving on. And I don’t want to install the next game before having done that decision. So in the end I end up not playing any PC game at all, but play something casual on my iPad or watch Netflix or do something D&D related.

The rational me realizes that this is pretty idiotic. If I don’t really like this game, I should just ditch it and try the next one. But the not-so-rational part of me has its doubts: Maybe I just wasn’t in a good mood when I tried the game. Maybe it gets better after a while. Maybe the $25 investment in the game necessitates a second try (which my rational self recognizes as a typical sunk cost fallacy).

I believe that a lot about our enjoyment of games isn’t really rational. We are perfectly capable of loving a game, then hating it, then loving it again. I always chuckle when I see Steam reviews of some player who has spend several hundred hours with a game and now tells you that the game sucks. The simple task of playing a game and deciding whether I like it or not turns out to be not simple at all. And then the default mode becomes procrastination until the game lingered so long on my computer that I finally uninstall it. Maybe I should try a service like Steam Advisor to find games I already own which I actually want to play.

An old problem

I played Magic the Gathering both in physical form and in various digital forms. Anybody who does thinks not much differently of his digital cards than of his physical cards. After all the cards in both forms serve the exactly same purpose, and being able to use the physical card as a doorstop isn’t really relevant enough to value the physical card more than the digital one. However legally I only ever owned the physical cards. Virtual property still has no legal standing in Europe or the USA, so my digital cards are not considered my property. That is a very old problem, and up to now nobody really cared enough about it to consider it worth changing.

But this month comes along EA’s Star Wars Battlefront II with its loot box controversy. And some politicians woke up and realized that such a system is very similar to gambling: You pay real money for a random chance to win something which is of value to you. It is easy to imagine a child being seduced by that and spending hundreds or thousands of daddy’s credit card, because daddy is an idiot regarding his kid and his credit card. Even if research suggests that the real whales are more likely to be lonely bankers with too much money, a politician would rather be seen protecting the children than protecting the bankers. So an attack on loot boxes makes political sense with that child protection story.

However suddenly our old problem is back. Virtual property still doesn’t exist, legally. So the content of a loot box, legally speaking, has no value. So buying loot boxes can’t be gambling, because, legally speaking, you can’t win anything of value. Having ignored the problem of virtual property in the past is now biting the legal system in the ass.

I, being a scientist by education, once had a very interesting conversation with somebody with a legal background about the nature of truth. As a scientist I believe that there is an absolute truth, which I can examine and measure, and then describe with words. If the words don’t fit with reality, the words are wrong. The legal guy thought that writing down words in a law or contract created truth. If the words didn’t fit with reality, reality was wrong. This is one of those cases. It is pretty much obvious to any sane person that loot boxes are a form of gambling (regardless of whether we think gambling is good or bad). You pay money in the hope of winning a prize, and whether you get that prize depends on random chance. Whether you buy a raffle ticket to win a stuffed animal at the carnival or whether you buy a loot box to win a hero character in Battlefront 2 is exactly the same in the mind of the buyer. Only the legal words describing the two situations differ substantially.

While I am in favor of systems that prevent children having access to loot box systems in games, for me that is actually only the start. In order to get to that point we need to legally recognize loot boxes as gambling. And for that we need to legally recognize that virtual property exists and has value. That is a much larger and more important issue than just loot boxes.

Android LinkedIn Integration: Android – LeaVe my baThRoom at-least !

LinkedIn is a business and employment-oriented social networking service that operates via websites and mobile apps. It is mainly used for professional networking, including employers posting jobs and job seekers posting their curriculum vitae. LinkedIn allows members (both workers and employers) to create profiles and “connections” to each other in an online social network which may represent real-world professional relationships. It presents curriculum vitae of the individual which can be browsed by recruiters.

Android LinkedIn Integration

Android allow applications to connect to LinkedIn and share data or any kind of updates on LinkedIn.
Following are the ways through which you can integrate LinkedIn in application

  • LinkedIn SDK(Scribe)
  • Intent Share

1. LinkedIn SDK(Scribe)

The mobile SDK for Android increases your app’s time to market by providing out-of-box support for LinkedIn natively inside your Android applications. This allows you to boost your sign in conversion rates and provides you more time to work on the things that matter.

The SDK provides:
Single sign-on (SSO) authentication, in conjunction with the LinkedIn mobile app.
A convenient wrapper for making authenticated calls to LinkedIn’s REST APIs.
Deep linking” to additional member data in the LinkedIn mobile app.

Follow steps to integrate LinkedIn SDK 

Creating a new app in LinkedIn Developer account
Create a new LinkedIn application at https://www.linkedin.com/developer/apps. Click on Create new Application and follow the setup.
 create LinkedIn developer app
Fill following form
 create LinkedIn developer app form

 you will get Application ID for your Application

Create new Android Project
Open AndroidManifest.xml file and include the following code given below:
<uses-permission android:name=”android.permission.INTERNET” />
Download Mobile LinkedIn SDK 
Go to https://developer.linkedin.com/docs/android-sdk  and download a Mobile SDK for Android.
Unzip the file and add LinkedIn-sdk folder in your project.
Add Mobile LinkedIn SDK in project
Open setting.gradle file in your project and include linkedin-sdk folder in your project.
include ‘:app’,’:linkedin-sdk
Adding library in depencencies
Add the following code in the file’s (/app/build.gradle file) dependencies to compile linkedin-sdk
compile project(‘:linkedin-sdk’)
compile ‘com.squareup.picasso:picasso:2.5.2’
compile ‘de.hdodenhof:circleimageview:1.3.0’
Synchronize your project
Generate hash Key
We need to generate a hash key. This generated Hash key will integrate your app with LinkedIn account.
Adding hash key in your LinkedIn Developer account
Go to https://www.linkedin.com/developer/apps  select your application name and click the Mobile tab. Add the package name and generated hash key in your LinkedIn Application. This hash key will authenticate your mobile application.
LinkedIn developer app hash key
Once everything is complete, you can run the Linkedin sample application

2. Intent Share

An android share intent allow your app to share contents such as URL or text and Image to other apps installed in your Android device like Facebook, Twitter, Messaging, Instagram, whatsapp, etc.

 Android provides intent library to share data between activities and applications. In order to use it as share intent , we have to specify the type of the share intent to ACTION_SEND. Its syntax is given below

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);

Next thing you need to is to define the type of data to pass , and then pass the data. Its syntax is given below 

shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, " From Suven Consultency");
startActivity(Intent.createChooser(shareIntent, "Hello!!!!"));
Example
here is an example to share data on Linkedin using intent share.
  • You will use Android studio to create an Android application under a package net.suven.android.android_linkedinintegration.
  • Modify src/MainActivity.java file to add necessary code.
  • Modify the res/layout/activity_main to add respective XML components.
  • Run the application and choose a running android device and install the application on it and verify the results.
MainActivity.java
package net.suven.android.android_linkedinintegration;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import java.io.FileNotFoundException;
import java.io.InputStream;

public class MainActivity extends AppCompatActivity {
private ImageView img;

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

img = (ImageView) findViewById(R.id.imageView);
Button b1 = (Button) findViewById(R.id.button);

b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
Uri screenshotUri = Uri.parse("android.
resource://net.suven.android.android_linkedinintegration/*");

try {
InputStream stream = getContentResolver().openInputStream(screenshotUri);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

sharingIntent.setType("suvenlogo/jpeg");
sharingIntent.putExtra(Intent.EXTRA_STREAM, screenshotUri);
startActivity(Intent.createChooser(sharingIntent, "Share image using"));
}
});
}
}
activity_main
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textSize="30dp"
android:text="Linkedin Share" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorials Point"
android:id="@+id/textView2"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true"
android:textSize="35dp"
android:textColor="#ff16ff01" />

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:layout_below="@+id/textView2"
android:layout_centerHorizontal="true"
android:src="@drawable/logo"/>

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Share"
android:id="@+id/button"
android:layout_marginTop="61dp"
android:layout_below="@+id/imageView"
android:layout_centerHorizontal="true" />

</RelativeLayout>

Following is the output of application.

android linkedin integration app
Click on share button. you will see list of share provider
share post
Now select LinkedIn from the list and then write your message shown in following image 

write linkedin post


Click here to download Source Code and APK

Are you interested to learn Android Programming?

Uses and abuses of challenge

Once upon a time, in a past so long a go that few people remember it, computer games came with an options menu in which you could choose the difficulty and challenge of the game yourself. The idea was that all of us would like games to be both winnable and not a pushover, but because preferences on how easily winnable a game should be, as well as experience and skill in a game, vary from user to user, it would be best to have several options in order to please everybody. Now that was way back when games still came in a box. With games increasingly switching to a “game as a service” online experience, difficulty settings fell out of favor. Somehow it appeared to make more sense if the same orc in World of Warcraft held the same challenge for each player, with the only variable being the power level of the player himself. With less and less single-player games around, and PvE games being more and more replaced by PvP, difficulty setting have become increasingly rare.

I’ve been playing a bunch of pseudo-PvP games on my iPad lately. Pseudo because I don’t necessarily fight another player online at the same time, but my army fights his computer-controlled army. That usually was nice enough at the start of the game. But then with each win I gained some sort of trophies or ranking, so that later I was matched against more and more powerful players. Ultimately it was obvious that this was a no-win proposition: The better I did, the more likely it became that I would lose the next game. The only strategy that worked was to deliberately lose games, to drop down in rankings, to then win the now easier PvP games in order to achieve the quests and goals the game set me. But that sort of cheesy strategy isn’t exactly fun.

The other type of game I played recently is the one in which your performance doesn’t actually matter at all any more. I played Total War: Arena, but many team vs. team multiplayer games fall into the same category: The contribution of any single player to the outcome of a 10 vs. 10 battle is only 5%. That gets quite annoying if you come up with a brilliant move and outmaneuver another player and crush him, only to find that the 9 other players on the enemy team obliterated your 9 team mates, and you lost the battle. Especially since in Total War: Arena you end up with more rewards having done nothing much in a won battle than for a great performance in a lost battle.

Finally my wife was complaining about a problem with challenge levels in her iPad puzzle games: The games are free to play, they get harder and harder with each level until you can’t beat it any more, and then the game offers you a way out: Use some sort of booster, which of course you need to pay real money for, to make the too hard levels easy enough to win again.

Somehow I get the feeling we lost something important when difficulty sliders went out of fashion. However the discussion of difficulty and challenge is complicated by the fact that this is one of the issues where gamers are the most dishonest about. Gamers tend to say they want more challenge, but when you observe what they are doing, e.g. attacking the enemy castle in a PvP MMORPG at 3 am in the morning, it is clearly that they are mostly occupied with avoiding or circumventing any actual challenge. Pay2Win and loot boxes wouldn’t be such an issue if gamers weren’t actually spending their money on improving their chances to win. If most gamers were so interested in challenge, then why is there so much cheating and botting going on? People want to win, by any means, and by talking up the challenge they want to make their win look more impressive. Which is kind of sad, if you think about it, that their positive self-image depends on being a winner in a video game. Many a fragile gamer-ego can’t admit that they’d quite like a relaxing game that doesn’t constantly challenge them to the max. I do.

World of Hoplites

I recently received an announcement telling me that I could sign up for the beta of a new Total War game, called Total War: Arena. Hmmm. While I did play some Total War games, I must admit that I am not the world’s biggest fan of the series, mostly because of the extra stupid AI. So a PvP version to me sounded like a cheap ploy to eliminate the AI. But then I saw that the game was 10 vs. 10 players, with each player commanding some troops. And I thought to myself, “Oh, that looks like World of Tanks with hoplites, I’m interested!”, and signed up.

Today I got the activation code, and only then I realized that this doesn’t just look like World of Tanks with hoplites, it actually *is* World of Hoplites, programmed by the same people who made World of Tanks, Warplanes, and Warships: Wargaming.net. The “Total War” part is just some cross-branding marketing trick to attract the people who are Total War fans but don’t play any games from Wargaming.net yet. Well, best case scenario Wargaming.net programmed the gameplay and Creative Assembly provided the graphics. (Worst case scenario is the other way round).

So now I am downloading the beta, and I am looking forward to trying it out. In the interest of full disclosure I’d like to add that Wargaming.net is one of the small number of game companies from which I ever received freebies. After posting an interview with one of the devs my World of Tank account was set to receive 250 gold every day I logged on. And as I was playing a lot I ended up with still over 70,000 gold left in that game. But I already had spent money on WoT before, and unfortunately the World of Tank gold isn’t the same as the World of Warships gold, and probably also not the same as the Total War: Arena gold. So no freebies for me for the new game!

Corporate Media Allowed Net Neutrality to Die in Silence

The flagship morning news shows on broadcast and cable news covered net neutrality for less than four minutes combined.

The Federal Communications Commission (FCC) today voted to repeal net neutrality rules, which will allow internet service providers to block or slow down service and access to websites, or charge fees for faster service.

If you weren’t aware of this potentially monumental change that will significantly impact your internet access, that’s because the major news networks mostly haven’t been doing their jobs.

Hours before today’s FCC repeal vote, the flagship morning news shows on the six major broadcast and cable news networks devoted an embarrassingly small amount of time to covering net neutrality. Relative silence from the major news networks on net neutrality is unfortunately nothing new, as Media Matters has previously documented.

This morning, most of the morning news programs either completely ignored the impending move or cursorily mentioned it for a few seconds at a time. Among the cable news networks, Fox News’ Fox & Friends spent just 52 seconds on net neutrality. MSNBC’s Morning Joe and CNN’s New Day did not cover the story at all. (It was covered for about half a minute on MSNBC’s early morning show, First Look, and roughly one minute on CNN’s early morning show, Early Start. After the conclusion of Morning Joe, MSNBC has been covering net neutrality in detail on MSNBC Live.)

The broadcast networks also spent scant time on the issue: ABC’s Good Morning America devoted just 14 seconds to net neutrality and NBC’s Today didn’t mention it at all. CBS This Morning led the pack with two and a half minutes of coverage this morning, and was the only one of the flagship morning programs to run a full segment on the topic.

Since November 28, cable news networks have mostly given net neutrality minimal coverage: approximately five minutes each on CNN and Fox News and almost 17 minutes on MSNBC, which has consistently devoted the most coverage to net neutrality in recent weeks. Broadcast networks have been mostly crickets, too. Since November 28, NBC has devoted about eight minutes to covering net neutrality while CBS has spent close to five minutes, and ABC has devoted just 14 seconds to the topic — the brief mention on Good Morning America this morning.

Since November 20, when news first broke about the planned repeal, the six networks have devoted a combined nearly one hour and 53 minutes to the story; although, MSNBC alone has accounted for more than one hour and three minutes of that total coverage time. The vast majority of the coverage occurred before November 28.

Under Trump, the Republican-led FCC has already done significant damage to the local news landscape and paved the way for major corporate consolidation in media — but repealing net neutrality seems to be its most unpopular action yet. A new survey found that 83 percent of Americans don’t approve of the FCC’s repeal proposal — including 3 out of 4 Republicans. Even the FCC’s own chief technology officer warned against the move. And 18 attorneys general had called for a delay in the vote due to widespread fraudulent comments during the public comment period.

That’s probably why chairman Ajit Pai’s media tour in the days before the net neutrality repeal has largely targeted conservative and far-right media that may provide a (marginally) more friendly audience. Since November 21, Pai has given four cable news interviews: two with Fox & Friends, one with Fox News’ Tucker Carlson, and a fourth with conservative talk radio host Hugh Hewitt at MSNBC. He did not give an interview to any of the three major broadcast networks. (Pai also seemingly promoted the repeal by appearing in an embarrassing video at The Daily Caller along with renowned plagiarist Benny Johnson and a Pizzagate conspiracy theorist.)

It’s also why major news networks’ relative silence on such a deeply unpopular and hugely consequential action like the FCC’s repeal vote is a net benefit to the commission and to major corporations — and keeps an informed public from fighting back.

Methodology

Media Matters searched the Snapstream database of television video transcripts for any mentions of “net neutrality,” “Federal Communications Commission,” or “FCC” from November 20 through December 14, 2017 on ABC’s Good Morning AmericaWorld News Tonight with David Muir, and This Week with George Stephanopoulos; CBS’s This Morning, Evening News, and Face the Nation with John Dickerson; NBC’s Today, Nightly News with Lester Holt, and Meet the Press with Chuck Todd; and all-day programming (through 9am on December 14) on the three major cable news networks — CNN, Fox News Channel, and MSNBC. We also searched the Nexis transcript database and the iQ Media transcript database for the same terms. Since November 23 was Thanksgiving, some networks altered their regularly scheduled programming on that day.

We included any segment about FCC chair Ajit Pai’s proposal or the FCC vote scheduled for December 14 following Politico’s November 20 report on the proposal. We timed all such segments from start to finish, and excluded any breaks to other news or to commercials. We also included portions of multi-topic segments when two or more speakers discussed the FCC chair’s proposal or the scheduled vote on the proposal with one another. In those instances, we only timed the relevant discussion and not the entire segment. We excluded passing mentions of the proposal or its vote, and we excluded teasers of upcoming segments about the proposal or its vote.

Note: This post has been updated to reflect that the FCC officially moved to repeal net neutrality rules in a 3-2 vote on December 14. 

Rob Savillo contributed research to this report. Charts by Sarah Wasko.

 

Related Stories

  • 12 Most Insane Rules From the Biggest Neo-Nazi Website on the Internet
  • Late-Night Hosts Agree: After Roy Moore’s Defeat, ‘The Real Loser Here Is Donald Trump’
  • Blame the Media? The NY Times Coverage of Clinton v. Trump Was Lacking

Deal: Nova Launcher Prime on sale for $0.99 (was $4.99)

Nova Launcher Prime is regarded as one of the best launchers on Android. It’s sitting right now with an average rating of 4.8 out of 5 stars at the Google Play Store, based on hundreds of thousands of reviews, and if you’ve never used it before, now might be the time.

As pointed out on Reddit, Nova Launcher Prime has been reduced from $4.99 to just $0.99 — the same offer it launched this time last year. This is the unlocked version of the free Nova Launcher app, which comes with a slew of extra customization options and advanced features, like notifications badges, gestures, and more.

Editor’s Pick

Nova Launcher allows you to alter many aspects of your Android phones home screen, such as the app drawer, folders, dock, and their aesthetic, and has received a number of Android 8.1 Oreo features lately, including adaptive icons and the custom dock widget.

Nova Launcher sits on our best Android Launchers list and it doesn’t look like it will be moving anytime soon. We don’t know how long this deal will last, but you can find the free and Prime versions of the app in Google Play via the buttons below (note that Google Play says Nova Launcher Prime hasn’t been updated since December 2016 but it will still unlock the latest content found in the regular app).

Download Nova Launcher
Download Nova Launcher Prime