CMPS 3350 Lab-11a
Android Studio App Delivery
Your goal for this lab is to produce a signed Android APK
that resides on your own public web page,
and can be installed by a mobile-device user.
Start with your Android app from lab-11. Create a signed Android Package (APK) for your app. The apk should be created in release mode. Android developer publish-your-page Use the Android Studio menu and options to get this done. Use online documentation or tutorials. Place your final signed APK on a public Odin web page. Name your web page: https://www.cs.csub.edu/~userid/3350/lab11.html where ~userid is your Odin account name. This equates to your /public_html/3350/ folder on Odin. There is no lab11 web folder. Please put your android apk file in the 3350 folder at: https://www.cs.csub.edu/~userid/3350/myapp.apk Name the apk exactly: myapp.apk Lower case .apk please. Your instructor should be able to click on a web page element, and install your app on a mobile Android device. The web page hosting your app should... • be pleasing to the eye. • give technical information about your app. • help a user decide if your app will work for them. Do not belittle or disrespect your own app on your page. Sample web page Student page The page above is a sample. You may look at the sample page. Using the sample page as your own work will not get you much credit.
Steps 2 and 3 below are optional. Adding one or more features below shows extra effort.
helpful links:
sensors
network
Add a button to your app. Set your button label to something like: "Contact Server" When the button is clicked or touched, your program will read the contents of a file on your own Odin server account, and display the text contained there. You may also contact a PHP file that returns some text. You may use the graphical interface provided to show the text.Below is sample code to draw graphics on a canvas (the screen).
public class MainActivity extends AppCompatActivity {
...
protected void onCreate(Bundle savedInstanceState) {
...
myView v;
v = new myView(this);
setContentView(v);
...
}
class myView extends View {
private Paint paint;
public myView(Context context) {
super(context);
init();
}
private void init() {
paint = new Paint();
paint.setStyle(Paint.Style.FILL_AND_STROKE);
invalidate(); //causes a canvas draw
}
protected void onDraw(Canvas canvas) {
paint.setColor(Color.rgb(255,255,0));
paint.setStyle(Paint.Style.FILL);
canvas.drawRect(0, 0, x, y, paint);
paint.setTextSize(100);
canvas.drawText("3350 Lab-11", 0, 0, paint);
}
}
}
Below is sample code to read a file from a web server.
Sources:get-text-from-web-page-to-string
how-to-use-separate-thread-to-perform-http-requests
public class Thx implements Runnable {
@Override
public void run() {
try {
URL url = new URL("https://cs.csub.edu/~you/3350/some-file.txt");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
StringBuilder total = new StringBuilder();
String line;
while ((line = in.readLine()) != null) {
total.append(line + " ");
}
strxx = total.toString();
in.close();
} catch (MalformedURLException e) {
} catch (IOException e) {
}
return;
}
};
Add code to your app that will display sensor information.
Some sample code for sensors is below.
The code implements listeners for an accelerometer and a gyroscope
sensor.
Try to get it working in your app.
public class MainActivity extends AppCompatActivity implements SensorEventListener
{
private SensorManager mSensorManager;
private Sensor mAccelerometer;
private Sensor mGyroscope;
...
@Override
public void onCreate(Bundle savedInstanceState) {
...
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_GAME);
...
}
@Override
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onPause() {
super.onPause();
mSensorManager.unregisterListener(this);
}
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
Toast.makeText( getApplicationContext(), "wiggle",
Toast.LENGTH_SHORT ).show();
}
}
...
}
Show Gordon your working program during lab session.
Save your project onto your laptop or a flash drive.
The source files for your apk should be on Odin server as:
3350/b/activity_main.xml
3350/b/MainActivity.java
3350/b/string.xml