{ "id": "97737", "key": "TIMOB-10066", "fields": { "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "14700", "description": "2012 Sprint 25", "name": "2012 Sprint 25", "archived": true, "released": true, "releaseDate": "2012-12-17" }, { "id": "14784", "description": "2012 Sprint 25 API", "name": "2012 Sprint 25 API", "archived": true, "released": true, "releaseDate": "2012-12-17" } ], "resolution": { "id": "6", "description": "", "name": "Hold" }, "resolutiondate": "2012-12-11T18:40:41.000+0000", "created": "2012-07-20T15:55:40.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [ "api" ], "versions": [ { "id": "13271", "description": "Release 2.1.0", "name": "Release 2.1.0", "archived": false, "released": true, "releaseDate": "2012-06-29" } ], "issuelinks": [ { "id": "22754", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "104401", "key": "MOD-1006", "fields": { "summary": "Research possible module solution for transparent activity", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "7", "description": "gh.issue.story.desc", "name": "Story", "subtask": false } } } } ], "assignee": { "name": "krowley", "key": "krowley", "displayName": "Karl Rowley", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2013-03-30T16:47:44.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10202", "name": "Android", "description": "Android Platform" } ], "description": "We need a way to have a transparent activity on top of another app. Here is some information:\r\n\r\nhttp://abtandroid.blogspot.com/2011/08/small-tutorial-on-creating-transparent.html\r\nhttp://www.coderzheaven.com/2011/07/20/how-to-create-a-transparent-activity-in-android/\r\n\r\nAn app that does something similar to what the customer wants to do: https://play.google.com/store/apps/details?id=at.neiti.scribblesmart\r\nHere is the source: https://github.com/mneubrand/scribble-smart\r\n\r\nThis possibly is a module request or is even possible just with the theme manifests. If so I'll need some guidance on the best way to tackle this.", "attachment": [ { "id": "29978", "filename": "Archive.zip", "author": { "name": "rblalock", "key": "rblalock", "displayName": "Rick Blalock", "active": false, "timeZone": "America/Havana" }, "created": "2012-07-23T16:58:01.000+0000", "size": 750636, "mimeType": "application/zip" }, { "id": "29975", "filename": "IMG_3009.MOV", "author": { "name": "rblalock", "key": "rblalock", "displayName": "Rick Blalock", "active": false, "timeZone": "America/Havana" }, "created": "2012-07-23T15:38:13.000+0000", "size": 1814938, "mimeType": "video/quicktime" } ], "flagged": false, "summary": "Android: Allow for transparent activities", "creator": { "name": "rblalock", "key": "rblalock", "displayName": "Rick Blalock", "active": false, "timeZone": "America/Havana" }, "subtasks": [], "reporter": { "name": "rblalock", "key": "rblalock", "displayName": "Rick Blalock", "active": false, "timeZone": "America/Havana" }, "environment": null, "comment": { "comments": [ { "id": "213014", "author": { "name": "vduggal", "key": "vduggal", "displayName": "Vishal Duggal", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Moving to sprint 17. Trading for some 2.1.2 requests", "updateAuthor": { "name": "vduggal", "key": "vduggal", "displayName": "Vishal Duggal", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2012-08-06T15:32:12.000+0000", "updated": "2012-08-06T15:32:12.000+0000" }, { "id": "213705", "author": { "name": "ngupta", "key": "ngupta", "displayName": "Neeraj Gupta", "active": true, "timeZone": "America/Los_Angeles" }, "body": "De-prioritizing this feature based on the discussion with services team.", "updateAuthor": { "name": "ngupta", "key": "ngupta", "displayName": "Neeraj Gupta", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-08-09T17:31:04.000+0000", "updated": "2012-08-09T17:31:04.000+0000" }, { "id": "225869", "author": { "name": "krowley", "key": "krowley", "displayName": "Karl Rowley", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Here's an example of a transparent activity. \r\n\r\n{code}\r\npackage com.alert;\r\n\r\nimport android.app.Activity;\r\nimport android.content.Intent;\r\nimport android.os.Bundle;\r\nimport android.util.Log;\r\nimport android.view.Gravity;\r\nimport android.view.View;\r\nimport android.view.View.OnClickListener;\r\nimport android.view.Window;\r\nimport android.view.WindowManager;\r\nimport android.widget.Button;\r\n\r\npublic class ServicesDemo extends Activity implements OnClickListener {\r\n private static final String TAG = \"ServicesDemo\";\r\n Button buttonStart, buttonStop;\r\n\r\n @Override\r\n public void onCreate(Bundle savedInstanceState) {\r\n super.onCreate(savedInstanceState);\r\n \r\n Window window = getWindow();\r\n \r\n window.setLayout(100, 100);\r\n window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,\r\n WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);\r\n window.setGravity(Gravity.LEFT);\r\n window.setContentView(R.layout.main)\r\n \r\n }\r\n\r\n@Override\r\npublic void onClick(View v) {\r\n\t// TODO Auto-generated method stub\r\n\t\r\n}\r\n \r\n}\r\n{code}\r\n\r\n\r\nlayout/main.xml:\r\n{code}\r\n\r\n\r\n\r\n \r\n\r\n\r\n{code}\r\n\r\nvalues/styles.xml:\r\n\r\n{code}\r\n\r\n\r\n \r\n\r\n{code}\r\n\r\nAndroidManifest.xml:\r\n{code}\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n{code}", "updateAuthor": { "name": "krowley", "key": "krowley", "displayName": "Karl Rowley", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-11-01T21:21:40.000+0000", "updated": "2012-11-02T21:49:43.000+0000" }, { "id": "226046", "author": { "name": "krowley", "key": "krowley", "displayName": "Karl Rowley", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Here's a transparent activity that's started from a broadcast receiver\r\n(listening for changes to phone state):\r\n\r\n{code}\r\npackage com.phone;\r\n\r\nimport android.app.Activity;\r\nimport android.content.Intent;\r\nimport android.os.Bundle;\r\nimport android.util.Log;\r\nimport android.view.Gravity;\r\nimport android.view.View;\r\nimport android.view.View.OnClickListener;\r\nimport android.view.Window;\r\nimport android.view.WindowManager;\r\nimport android.widget.Button;\r\n\r\npublic class ButtonActivity extends Activity implements OnClickListener {\r\n private static final String TAG = \"ServicesDemo\";\r\n Button buttonStart, buttonStop;\r\n\r\n @Override\r\n public void onCreate(Bundle savedInstanceState) {\r\n super.onCreate(savedInstanceState);\r\n\r\n \r\n Window window = getWindow();\r\n \r\n window.setLayout(100, 100);\r\n window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,\r\n WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);\r\n window.setGravity(Gravity.LEFT);\r\n window.setContentView(R.layout.main);\r\n \r\n }\r\n\r\n@Override\r\npublic void onClick(View v) {\r\n\t// TODO Auto-generated method stub\r\n\t\r\n}\r\n \r\n}\r\n{code}\r\n\r\n{code}\r\npackage com.phone;\r\n\r\nimport android.app.Activity;\r\nimport android.content.BroadcastReceiver;\r\nimport android.content.Context;\r\nimport android.content.Intent;\r\nimport android.util.Log;\r\n\r\npublic class IncomingReceiver extends BroadcastReceiver {\r\n\r\n\t\r\n @Override\r\n public void onReceive(Context context, Intent intent) {\r\n \r\n \r\n Log.i(\"com.phone\", \"onReceive\");\r\n try {\r\n \t\r\n \r\n \tIntent activityIntent = new Intent(context, ButtonActivity.class);\r\n \tactivityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);\r\n \tcontext.startActivity(activityIntent);\r\n \tLog.i(\"com.phone\", \"Started activity\");\r\n }\r\n catch (Exception exp) {\r\n \tLog.i(\"com.phone\", \"Caught exception trying to start activity \" + exp.toString());\r\n }\r\n\r\n }\r\n\r\n\r\n}\r\n{code}\r\n\r\n{code}\r\n\r\n\r\n\r\n \r\n\r\n\r\n{code}\r\n\r\n{code}\r\n\r\n\r\n \r\n\r\n{code}\r\n\r\nAndroidManifest.xml\r\n{code}\r\n\r\n\r\n \r\n\r\n\t\t\r\n\t\t \r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n\r\n\r\n\r\n{code}", "updateAuthor": { "name": "krowley", "key": "krowley", "displayName": "Karl Rowley", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-11-02T21:55:49.000+0000", "updated": "2012-11-02T21:58:06.000+0000" }, { "id": "226223", "author": { "name": "krowley", "key": "krowley", "displayName": "Karl Rowley", "active": true, "timeZone": "America/Los_Angeles" }, "body": "A Javascript version of the transparent activity would look \nsomething like the following. A problem here is that the \nactivity in the background does not show through -- I am not \nsure how to bypass the splash screen here so that the existing \nactivity shows.\n\n{code}\nvar win = Titanium.UI.createWindow({\n id: \"propertyWindow\",\n title: \"My New Window\",\n modal: true,\n width:100,\n height: 100,\n top: 100,\n left: 0, \n full: false,\n opacity: 0.5,\n topMost: true,\n visible: true,\n transparentBackground: true,\n transparency: true\n });\n \n var button = Titanium.UI.createButton({title: \"Button\"});\n button.height=100;\n button.width=100;\n button.left=0;\n button.top=100;\n win.add(button);\n \nwin.width=100;\nwin.height=100;\nwin.left=0;\nwin.top=100;\nwin.open();\n\n{code}", "updateAuthor": { "name": "krowley", "key": "krowley", "displayName": "Karl Rowley", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-11-05T22:54:54.000+0000", "updated": "2012-11-05T22:54:54.000+0000" }, { "id": "226398", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Module needs to be be 2.1.X compatible (and should also work on 3.0.0). Once we've figured out for sure this is a module item, be can move the ticket and remove the merge tags.", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-11-06T22:52:54.000+0000", "updated": "2012-11-06T22:52:54.000+0000" }, { "id": "227874", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Should we resolve this ticket as \"on hold\" until the module is done?", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-11-19T17:44:11.000+0000", "updated": "2012-11-19T17:44:11.000+0000" }, { "id": "244753", "author": { "name": "farfromrefuge", "key": "farfromrefuge", "displayName": "Martin Guillon", "active": false, "timeZone": "Europe/Berlin" }, "body": "That's actually already possible. I already do it.\r\nYou only need to use android theming system.\r\nUse a style like this\r\n\r\n\r\n\r\nAnd it will give you a transparent window", "updateAuthor": { "name": "farfromrefuge", "key": "farfromrefuge", "displayName": "Martin Guillon", "active": false, "timeZone": "Europe/Berlin" }, "created": "2013-03-30T16:47:44.000+0000", "updated": "2013-03-30T16:47:44.000+0000" } ], "maxResults": 16, "total": 16, "startAt": 0 } } }