Pages

Wednesday, October 19, 2016

Google for Work security Announcing Data Loss Prevention to wrap up 2015



Every company has data that it must keep secure — whether that data is about confidential innovations, strategic plans or sensitive HR issues — keeping all of your data safe from inadvertent or purposeful leaks needs to be simple, quick and reliable. Google for Work already helps admins manage information security with tools such as encryption, sharing controls, mobile device management and two-factor authentication. However, sometimes user actions compromise the best of all of these controls; for example, a user might hit “Reply all” when meaning to send a private message with sensitive content.

Starting today, if you’re a Google Apps Unlimited customer, Data Loss Prevention (DLP) for Gmail will add another layer of protection to prevent sensitive information from being revealed to those who shouldn’t have it.

How Gmail DLP works

Organizations may have a policy that the Sales department shouldn’t share customer credit card information with vendors. And to keep information safe, admins can easily set up a DLP policy by selecting “Credit Card Numbers” from a library of predefined content detectors. Gmail DLP will automatically check all outgoing emails from the Sales department and take action based on what the admin has specified: either quarantine the email for review, tell users to modify the information or block the email from being sent and notify the sender. These checks don’t just apply to email text, but also to content inside common attachment types ? such as documents, presentations and spreadsheets. And admins can also create custom rules with keywords and regular expressions.


Check out the DLP whitepaper for more information including the full list of predefined content creators, and learn how to get started. Gmail DLP is the first step in a long-term investment to bring rule-based security across Google Apps. We’re working on bringing DLP to Google Drive early next year, along with other rule based security systems.

As we round out the year, let’s take a look at what we did in 2015 to enhance the security, privacy and control you have over your information.

  • To verify the good work we do on privacy, we were one of the first cloud providers to invite an independent auditor to show that our privacy practices for Google Apps for Work and Google Apps for Education comply with the latest ISO/IEC 27018:2014 privacy standards. These confirm for example, that we don’t use customer data for advertising.
  • To make security easier for all, weve expanded our security toolset:
    • We introduced Security Keys to make two-step verification more convenient and provide better protection against phishing. For admins, we released Google Apps identity services, which allows secure single sign on access with SAML and OIDC support and we delivered device (MDM) and app (MAM) Mobile Management across Google Apps.
    • We launched Postmaster tools to help Gmail users better handle large volumes of mail and report spam.
    • For Google Cloud developers, the Cloud Security Scanner allows you to easily scan your application for common vulnerabilities (such as cross-site scripting (XSS) and mixed content).
    • For those who want the power and flexibility of public cloud computing and want to bring their own encryption keys, we announced Customer-Supplied Encryption Keys for Google Cloud Platform.
    • To give more transparency on how email security, even beyond Gmail, is changing over the years we published the Safer Email report.
  • We introduced new sharing features, alerts and audit events to Google Drive for Google Apps Unlimited customers. For example, administrators can now create custom alerts and disable the downloading, printing or copying of files with Information Rights Management (IRM). New sharing settings give employees better control within their organization unit and now admins can let them reset their own passwords.
  • Google Groups audit settings allow better tracking of Groups memberships. For all, the launch of google.com/privacy gives better control over personal data and Android for Work makes it easier to keep personal and work data separate on employee devices.

Companies are moving to the Cloud for all kinds of reasons, but Security and Trust remain critical and predominant differentiators between providers. That’s why millions of businesses trust Google to do the daily heavy lifting in security ? preventing, testing, monitoring, upgrading and patching, while working towards the future. Because Google was born in the cloud, we’ve built security from the ground up across our entire technology stack, from the data centers to the servers to the services and features we provide across all of your devices. No other Cloud provider can claim this degree of security investment at every single layer.

While 2015 was a great year, there’s a lot more in store for 2016. To learn more about how our technology is evolving, please join us at the Enigma conference in San Francisco on January 25th to discuss electronic crime, security and privacy ideas that matter.
Read More..

Norwegian ad agency invents a new creative process with Google Apps for Work



Editors note: Today we hear from Christoffer Lorang Dahl, Digital Director at SMFB, an advertising agency based in Oslo, Norway. In the 14 years since it was founded, SMFB has delivered award-winning campaigns for local and international clients including Geox, Ikea and Statoil. Read how SMFB created a whole new work environment around Google Apps for Work and made its clients, collaborators and 65 staff happier in the process.




It’s hard to be a 21st century creative agency when we’re bogged down with a 20th century-like IT platform. As SMFB’s Digital Director, I work with creatives and account managers to make digital ideas happen. With at least five projects on the go on any given day, my hands are full, but I always make time to help out with IT, too. One year ago, this informal role took up at least three hours of my work week, while the rest of the team collectively lost 10 working hours a day to spam and a calendar system so clunky it was almost unusable. It was time for a change, so we trialled two possible solutions and chose Google. Not only did we see huge potential in Drive, we guessed that staff would be familiar with Gmail and adapt quickly. We were right.

Google Apps solved the core problems we wanted to address. Gmail fixed our issues with spam, and Google Calendar is exactly the synchronised, reliable and easy-to-use calendar we were looking for. Because of its straightforward interface, everyone can use it to book meeting rooms and tell designers which teams to work with on which days. We used to run everything through a server in Sweden, and when it crashed, none of us could work. We’ve never experienced any downtime since switching to Google.

As well as fix the problems we knew we had, Google Apps for Work has rejuvenated our creative process. It’s hard to put someone in an office and tell them to “be creative.” That’s not how creativity works, but it’s exactly what we used to do. A typical day at SMFB used to begin with a briefing from the account director to the creatives. After that, the creatives would head to their offices to come up with ideas, which they would share by late afternoon so that they could get feedback by the next day. Now creatives start every morning with a Hangout, spend the day in a cafe, under the sun or wherever they like, and share their ideas on Docs. The account director and account manager  even the clients  can pitch in on the process, concepts and copy, which constantly evolve. And we never experience the confusion that results from multiple drafts and versions floating around. Film scripts do change, but if the wrong draft is sent to an animator or a director, the consequences can be dire.

Once we have a project concept, we compile a budget together in Sheets and contact external production companies. We handle at least five of these at a time, and they change from one day to the next, but because Drive documents can be shared with anyone, we can send these external companies briefs, handle agreements and manage the whole process on one platform. Anyone can immediately see how a project is progressing by looking it up on Drive  something that’s vital for running campaigns on social media, where every second counts.

I like to help my colleagues, and Google’s simple administration interface makes it easy. When a workmate accidentally deleted crucial files, I retrieved them from Drive, which lets you recover documents from up to 10 users for up to 25 days. And rather than just react, I suggest better ways of doing things  like creating a group email account for a new project, which I can have ready in two minutes. It’s a whole new way of working. So much so, in fact, that I recommended Google Apps for Work to our partner agency, Forsman & Bodenfors. Now they’re on it, too.
Read More..

Tuesday, October 18, 2016

Strengthening the Google Apps ecosystem



The promise of the cloud is to make businesses more effective, more mobile and more secure. Today, more than 2 million paying businesses have chosen Google Apps for Work to advance communication, collaboration and productivity across work teams. In addition to all the goodness that Google Apps offers, many businesses look to the cloud for things like customer relationship management and telephony tools. Through our relationships with Google for Work Technology Partners, today well start recommending applications that help our customers get the most out of the cloud.

Great apps, recommended by Google

When we launched Google Apps in 2006, there weren’t many cloud apps on the market. Today, almost 10 years later, cloud software options abound. In some cases, this can make deciding on the right solution harder for customers. It can be difficult to assess which apps are secure, reliable, high-performing and well-integrated with the tools customers use most. And many businesses have neither the time nor the capability to do this assessment across all of the apps they might consider. To make this journey easier for our customers, Google will begin recommending apps from other providers. These apps are reviewed by Google and an independent third-party security firm to make sure that these solutions are safe and reliable, and meet our requirements for high quality integrations. An example is Smartsheet Project Management, which seamlessly integrates with Google Calendar, Gmail, Drive and Single Sign-On to deliver a great user experience, while meeting the security and integration requirements of a robust web solution.

The initial set of applications being added to the Recommended for Google Apps for Work program includes:

  • ProsperWorks for CRM
  • Smartsheet for project management
  • Ringcentral & Switch for cloud-based communications
  • AODocs & Powertools for document management
  • Ping Identity & Okta for identity and access management

This list will continue to grow as we review and add more apps.

Updates to the Google Apps Marketplace

The Google Apps Marketplace carries hundred of apps, including those that we’ve reviewed and recommended. These apps have been installed hundreds of millions of times by Google Apps customers. We recently updated the Google Apps Marketplace to make it easier for employees to find the right apps and added new notifications to let employees know when they have access to apps that just became available. To make it even easier to get your favorite apps on all of your devices, we’ll begin to feature a number of apps that also have Android mobile versions, with links to their Google Play for Work counterparts.



These updates will help Google Apps for Work customers find the best apps for their needs, while making it simpler for employees to use any app on any device.
Read More..

Sunday, October 16, 2016

New season new ways to get work done with Google Docs



Fall brings a new sense of energy and excitement as teammates get back to work after soaking up the summer sun and the kids return to school. To help you be more productive than ever this season, Google Docs is getting a whole new set of tools.

For 9 years our core focus has been on making collaboration as simple as possible, even if your team is spread out all over the world. So far this year, we’ve made more than 100 different improvements to the Google Docs, Sheets, Slides and Forms apps that help ease the content creation process. Now we’re taking the first steps to incorporate the power and intelligence of Google into Docs. We hope to make analyzing your data more intuitive, editing more accessible and document styling more dynamic – now your documents can be as beautiful as your ideas are bold.

Bringing the power of Google to your Docs


Whether you’re an agency researching creative ideas for a client pitch or a bakery brainstorming names for your newest dessert, pulling the wealth of information from Google search into your docs can transform them from interesting to inspiring. With the new Research feature in the Docs Android app, you’ll notice there’s less than half the steps previously needed to pull quotes, facts and images from Google search into your – in fact you’ll never even have to leave the app.



Voice typing has helped change the way we work on the go (when it’s easier to talk than type). We’re now bringing that innovation to the web, where improvements to voice transcription make even long-form dictation, like sharing your brainstorming ideas with teammates around the world, a breeze. In fact, it even supports more than 40 different languages, so it’s also handy for practicing your language skills. To start, just turn on voice typing from the tools menu in Google Chrome.

Whether it’s the data from your newly created Forms (more on that later) or one of your existing documents, the new Explore feature in Google Sheets will help you make sense of it all. It’s a tool designed to help you visualize, summarize and interpret your data 
 no more stressing or wasting countless hours stewing over endless rows of data. Simply select some data, open the Explore panel (available on the web and Android) and you’ll instantly see a selection of charts and text-based insights that help bring meaning to your numbers.



Documents that work for you


Google Forms makes it easy to quickly get information from teammates, customers and partners. And it’s getting a refresh, with new themes and the option to add your own photo or logo. You can choose from a wide selection of question types and even add images and gifs to your forms.

It can sometimes be a little overwhelming trying to make your docs look great. You’ll now notice a new arsenal of templates in the Docs, Sheets and Slides homescreens to make your work really stand out. Whether you’re creating a project plan for the team’s next big product launch or a simple budget spreadsheet to manage office finances for the next quarter, you’ll find a template for every scenario.


Finally, to make it easier to keep up with the latest updates when collaborating on a Doc with your team, there’s a “see new changes” option. It’ll show you all the changes made by your team, so you can check out what the Tokyo office was up to while you were sleeping. 


Want to learn more about each of these new features that are rolling out this season? Keep tabs on our Google+ and Twitter channels to see more tips, tricks and features.
Read More..

Saturday, October 15, 2016

Recap of the 2014 Google Cloud Platform Roadshows

We just wrapped up the Google Cloud Platform Roadshows, a series of developer events in 35 cities worldwide, where we reached nearly 4,500 developers spanning the globe, from Texas to Tel Aviv to Tokyo.

Now that the series is finished, we wanted to thank everyone for coming and share with you the slides and live recording of the talks from our New York City event:

  • Keynote (Slides | Video)
  • Blurring the IasS/PaaS Divide (Slides | Video)
  • From Data to Meaning (Slides | Video)
  • Containerizing the Cloud with Kubernetes and Docker (Slides | Video)
  • How to Design, Build and Run a Cloud App (Slides | Video)
  • Cloud Power Your Android Apps (Slides | Video not available)

The Roadshow team sends huge thanks to everyone who attended and looks forward to seeing you next year. Wed love to hear from you in the meantime:

  • Join the official Google Cloud Platform G+ community and stream
  • Participate in your local Google Developer Group and get together with other developers for events like code sprints and hackathons
  • Talk to us on Twitter @googlecloud
  • Get started now

Posted by Tom Van Waardhuizen, Program Manager
Read More..

Experience Firefox OS on your Android device


mozilla.org introducing Firefox OS 2.5 Developer Preview, an experimental app that lets you to use Firefox OS on your Android device. You can download the APK HERE.


It seem to be a launcher only, not a true OS. If you want the full Firefox OS 2.5 experience, you have to flash your phone.

Read More..

Thursday, October 13, 2016

Detect user click on InfoWindow by implementing GoogleMap OnInfoWindowClickListener


To detect user tap on Google Maps InfoWindow, implement your GoogleMap.OnInfoWindowClickListener() and call GoogleMap.setOnInfoWindowClickListener(OnInfoWindowClickListener).


Modify from last example "Custom InfoWindow for Google Maps Android API v2":

MapsActivity.java
package com.blogspot.android_er.androidstudiomapapp;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.InputType;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.common.GoogleApiAvailability;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;

public class MapsActivity extends AppCompatActivity implements OnMapReadyCallback,
GoogleMap.OnMapClickListener, GoogleMap.OnMapLongClickListener,
GoogleMap.OnMarkerDragListener, GoogleMap.InfoWindowAdapter {

private GoogleMap mMap;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);

}

/**
* Manipulates the map once available.
* This callback is triggered when the map is ready to be used.
* This is where we can add markers or lines, add listeners or move the camera. In this case,
* we just add a marker near Sydney, Australia.
* If Google Play services is not installed on the device, the user will be prompted to install
* it inside the SupportMapFragment. This method will only be triggered once the user has
* installed Google Play services and returned to the app.
*/
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.setOnMapClickListener(this);
mMap.setOnMapLongClickListener(this);
mMap.setOnMarkerDragListener(this);
mMap.setInfoWindowAdapter(this);
mMap.setOnInfoWindowClickListener(MyOnInfoWindowClickListener);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_addmarkers:
addMarker();
return true;
case R.id.maptypeHYBRID:
if(mMap != null){
mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
return true;
}
case R.id.maptypeNONE:
if(mMap != null){
mMap.setMapType(GoogleMap.MAP_TYPE_NONE);
return true;
}
case R.id.maptypeNORMAL:
if(mMap != null){
mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
return true;
}
case R.id.maptypeSATELLITE:
if(mMap != null){
mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
return true;
}
case R.id.maptypeTERRAIN:
if(mMap != null){
mMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
return true;
}
case R.id.menu_legalnotices:
String LicenseInfo = GoogleApiAvailability
.getInstance()
.getOpenSourceSoftwareLicenseInfo(MapsActivity.this);
AlertDialog.Builder LicenseDialog =
new AlertDialog.Builder(MapsActivity.this);
LicenseDialog.setTitle("Legal Notices");
LicenseDialog.setMessage(LicenseInfo);
LicenseDialog.show();
return true;
case R.id.menu_about:
AlertDialog.Builder aboutDialogBuilder =
new AlertDialog.Builder(MapsActivity.this);
aboutDialogBuilder.setTitle("About Me")
.setMessage("http://android-er.blogspot.com");

aboutDialogBuilder.setPositiveButton("visit",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String url = "http://android-er.blogspot.com";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
}
});

aboutDialogBuilder.setNegativeButton("Dismiss",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});

AlertDialog aboutDialog = aboutDialogBuilder.create();
aboutDialog.show();

return true;
}
return super.onOptionsItemSelected(item);
}

private void addMarker(){
if(mMap != null){

//create custom LinearLayout programmatically
LinearLayout layout = new LinearLayout(MapsActivity.this);
layout.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
layout.setOrientation(LinearLayout.VERTICAL);

final EditText titleField = new EditText(MapsActivity.this);
titleField.setHint("Title");

final EditText latField = new EditText(MapsActivity.this);
latField.setHint("Latitude");
latField.setInputType(InputType.TYPE_CLASS_NUMBER
| InputType.TYPE_NUMBER_FLAG_DECIMAL
| InputType.TYPE_NUMBER_FLAG_SIGNED);

final EditText lonField = new EditText(MapsActivity.this);
lonField.setHint("Longitude");
lonField.setInputType(InputType.TYPE_CLASS_NUMBER
| InputType.TYPE_NUMBER_FLAG_DECIMAL
| InputType.TYPE_NUMBER_FLAG_SIGNED);

layout.addView(titleField);
layout.addView(latField);
layout.addView(lonField);

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Add Marker");
builder.setView(layout);
AlertDialog alertDialog = builder.create();

builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
boolean parsable = true;
Double lat = null, lon = null;

String strLat = latField.getText().toString();
String strLon = lonField.getText().toString();
String strTitle = titleField.getText().toString();

try{
lat = Double.parseDouble(strLat);
}catch (NumberFormatException ex){
parsable = false;
Toast.makeText(MapsActivity.this,
"Latitude does not contain a parsable double",
Toast.LENGTH_LONG).show();
}

try{
lon = Double.parseDouble(strLon);
}catch (NumberFormatException ex){
parsable = false;
Toast.makeText(MapsActivity.this,
"Longitude does not contain a parsable double",
Toast.LENGTH_LONG).show();
}

if(parsable){

LatLng targetLatLng = new LatLng(lat, lon);
MarkerOptions markerOptions =
new MarkerOptions().position(targetLatLng).title(strTitle);

markerOptions.draggable(true);

mMap.addMarker(markerOptions);
mMap.moveCamera(CameraUpdateFactory.newLatLng(targetLatLng));

}
}
});
builder.setNegativeButton("Cancel", null);

builder.show();
}else{
Toast.makeText(MapsActivity.this, "Map not ready", Toast.LENGTH_LONG).show();
}
}

@Override
public void onMapClick(LatLng latLng) {
Toast.makeText(MapsActivity.this,
"onMapClick: " + latLng.latitude + " : " + latLng.longitude,
Toast.LENGTH_LONG).show();
}

@Override
public void onMapLongClick(LatLng latLng) {
Toast.makeText(MapsActivity.this,
"onMapLongClick: " + latLng.latitude + " : " + latLng.longitude,
Toast.LENGTH_LONG).show();

//Add marker on LongClick position
MarkerOptions markerOptions =
new MarkerOptions().position(latLng).title(latLng.toString());
markerOptions.draggable(true);

mMap.addMarker(markerOptions);
}


@Override
public void onMarkerDragStart(Marker marker) {
marker.setTitle(marker.getPosition().toString());
marker.showInfoWindow();
marker.setAlpha(0.5f);
}

@Override
public void onMarkerDrag(Marker marker) {
marker.setTitle(marker.getPosition().toString());
marker.showInfoWindow();
marker.setAlpha(0.5f);
}

@Override
public void onMarkerDragEnd(Marker marker) {
marker.setTitle(marker.getPosition().toString());
marker.showInfoWindow();
marker.setAlpha(1.0f);
}

@Override
public View getInfoWindow(Marker marker) {
return null;
//return prepareInfoView(marker);
}

@Override
public View getInfoContents(Marker marker) {
//return null;
return prepareInfoView(marker);

}

private View prepareInfoView(Marker marker){
//prepare InfoView programmatically
LinearLayout infoView = new LinearLayout(MapsActivity.this);
LinearLayout.LayoutParams infoViewParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
infoView.setOrientation(LinearLayout.HORIZONTAL);
infoView.setLayoutParams(infoViewParams);

ImageView infoImageView = new ImageView(MapsActivity.this);
//Drawable drawable = getResources().getDrawable(R.mipmap.ic_launcher);
Drawable drawable = getResources().getDrawable(android.R.drawable.ic_dialog_map);
infoImageView.setImageDrawable(drawable);
infoView.addView(infoImageView);

LinearLayout subInfoView = new LinearLayout(MapsActivity.this);
LinearLayout.LayoutParams subInfoViewParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
subInfoView.setOrientation(LinearLayout.VERTICAL);
subInfoView.setLayoutParams(subInfoViewParams);

TextView subInfoLat = new TextView(MapsActivity.this);
subInfoLat.setText("Lat: " + marker.getPosition().latitude);
TextView subInfoLnt = new TextView(MapsActivity.this);
subInfoLnt.setText("Lnt: " + marker.getPosition().longitude);
subInfoView.addView(subInfoLat);
subInfoView.addView(subInfoLnt);
infoView.addView(subInfoView);

return infoView;
}

GoogleMap.OnInfoWindowClickListener MyOnInfoWindowClickListener
= new GoogleMap.OnInfoWindowClickListener(){
@Override
public void onInfoWindowClick(Marker marker) {
Toast.makeText(MapsActivity.this,
"onInfoWindowClick(): " +
marker.getPosition().latitude + " " +
marker.getPosition().longitude,
Toast.LENGTH_LONG).show();
}
};


}


Reference: https://developers.google.com/maps/documentation/android-api/infowindows#info_window_events

Next:
- Display StreetViewPanoramaView in DialogFragment, when user click on InfoWindow


~ Step-by-step of Android Google Maps Activity using Google Maps Android API v2, on Android Studio

Read More..